CSPSMK09C. 矿工(miner)

提交3 通过2
通过率66.7%
文件IO启用
输入文件miner.in
输出文件miner.out
时间限制3000ms
内存限制1024MiB
    ID: 14557 传统题 文件IO 输入文件:miner.in 输出文件:miner.out 3000ms 1024MiB 尝试: 3 已通过: 2 难度: 提高+/省选- 上传者: 标签>C++CSP-S考前模拟

题目描述

题目描述

lbw 是一名小行星矿工。

在最近的一次采矿探险中,他开采了 NN 块矿物,其中第 ii 块矿物的价值为 viv_i,质量为 mim_i。lbw 计划用他的火箭将一组矿物运送到基地,但他只剩下足够进行一次飞行的燃料。他计算出火箭能够安全携带的最大总质量为 MM。由于 lbw 的采矿技术,这些矿物具有一个特殊性质:对于任意两块矿物,其中一块的质量可以被另一块的质量整除。

帮助 lbw 在火箭的限制下找到他能运送的最大总价值。

输入格式

第一行包含两个以空格分隔的整数 NN和 MM。

接下来的 NN 行,每行包含两个以空格分隔的整数 viv_i和 mim_i,分别表示第 ii 块矿物的价值和质量。此外,对于任意两块矿物 i,ji, j(1≤i,j≤N1 \leq i, j \leq N),要么 mi∣mjm_i \mid m_j,要么 mj∣mim_j \mid m_i,其中 a∣ba \mid b 表示 aa 是 bb 的因数(即 ba\frac{b}{a} 是整数)。

输出格式

输出一行,包含一个整数,表示 lbw 能运送的最大总价值。

输入样例

6 10 
1 1
5 2
200 6
9 2
6 2
100 1

输出样例

310

说明提示

样例解释

lbw 可以携带除第二块和第五块之外的所有矿物,以获得总价值 1+200+9+100=3101 + 200 + 9 + 100 = 310。注意,这些矿物的总质量为 1+6+2+1=101 + 6 + 2 + 1 = 10。可以证明这是最优解。

以下表格展示了 100 分的分布情况:

输入样例 #2

1 382233057012
803921582021 4

输出样例 #2

803921582021

输入样例 #3

2 98396626495
366938466589 16
679748728634 16

输出样例 #3

1046687195223

数据范围

分值 NN 的范围 MM 的范围 额外约束
8 分 N=2N = 2 1≤M≤1041 \leq M \leq 10^4 无
1≤N≤201 \leq N \leq 20
16 分 1≤N≤10001 \leq N \leq 1000
24 分 1≤M≤1081 \leq M \leq 10^8
8 分 1≤N≤5000001 \leq N \leq 500000 所有 mim_i 相等。
12 分 最多 2 种不同的 mim_i。
24 分 1≤M≤10121 \leq M \leq 10^{12} 无

(1≤N≤5000001 \leq N \leq 500000)

(1≤M≤10121 \leq M \leq 10^{12})

(1≤vi≤10121 \leq v_i \leq 10^{12})

(1≤mi≤10121 \leq m_i \leq 10^{12})