题号:NC269398
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld
题目描述
Easy version与Hard version题目中的题目要求略有区别,请注意区分,通过Hard version的代码稍加修改可通过Easy。
完全背包是一个经典问题,它指的是给你一个容量大小最大为

的背包,然后有

种物品,每种物品的体积为

,价值为

,且每种物品有无限多个。对于每种物品,你都可以任取若干个放入背包。
智乃现在对完全背包有了一个新的限制,假设将这

种物品放入背包后,第

种物品最终在背包内放了

个,第

种物品最终在背包内放了

个...,第

种物品最终在背包内放了

。
得到一个完全背包的答案序列
![[a_{1},a_{2},...,a_{N}]](https://www.nowcoder.com/equation?tex=%5Ba_%7B1%7D%2Ca_%7B2%7D%2C...%2Ca_%7BN%7D%5D)
。
智乃现在想要让最终的答案序列先单调非降再单调非升,且第

个物品在所选物品中成为选择次数最多的物品,即

成立。
现在智乃想让你对每一个背包容量

确定一个最小的

,使得在这个限制条件满足的前提下,智乃的背包能够装下最大价值总和的物品,并求出在该

的限制条件下这些物品的价值总和。
输入描述:
第一行输入两个正整数
表示物品的数目,背包的容量。
接下来
行输入两个正整数
表示物品的体积和价值。
输出描述:
第一行输出
个非负整数,第
个数表示智乃的背包容量为
,自己任选一个
,使得限制条件为
的情况下,能够装下的最大价值总和是多少。
第二行输出
个非负整数,第
个数表示智乃的背包容量为
时要想使得装下物品的价值总和最大,
的最小值为多少。