http://www.lydsy.com/JudgeOnline/problem.php?id=1625
太水了。
#include
#include
#include
#include
#include
#include
using namespace std;
#define rep(i, n) for(int i&#61;0; i<(n); &#43;&#43;i)
#define for1(i,a,n) for(int i&#61;(a);i<&#61;(n);&#43;&#43;i)
#define for2(i,a,n) for(int i&#61;(a);i<(n);&#43;&#43;i)
#define for3(i,a,n) for(int i&#61;(a);i>&#61;(n);--i)
#define for4(i,a,n) for(int i&#61;(a);i>(n);--i)
#define CC(i,a) memset(i,a,sizeof(i))
#define read(a) a&#61;getint()
#define print(a) printf("%d", a)
#define dbg(x) cout <<#x <<" &#61; " <
inline const int max(const int &a, const int &b) { return a>b?a:b; }
inline const int min(const int &a, const int &b) { return aint f[N], n, V, v, w;int main() {read(n); read(V);for1(i, 1, n) {read(v); read(w);for3(j, V, v) f[j]&#61;max(f[j], f[j-v]&#43;w);}print(f[V]);return 0;
}
Description
贝 茜在珠宝店闲逛时&#xff0c;买到了一个中意的手镯。很自然地&#xff0c;她想从她收集的 N(1 <&#61; N <&#61; 3,402)块宝石中选出最好的那些镶在手镯上。对于第i块宝石&#xff0c;它的重量为W_i(1 <&#61; W_i <&#61; 400)&#xff0c;并且贝茜知道它在镶上手镯后能为自己增加的魅力值D_i(1 <&#61; D_i <&#61; 100)。由于贝茜只能忍受重量不超过M(1 <&#61; M <&#61; 12,880)的手镯&#xff0c;她可能无法把所有喜欢的宝石都镶上。 于是贝茜找到了你&#xff0c;告诉了你她所有宝石的属性以及她能忍受的重量&#xff0c;希望你能帮她计算一下&#xff0c;按照最合理的方案镶嵌宝石的话&#xff0c;她的魅力值最多能增加多少。
Input
* 第1行: 2个用空格隔开的整数&#xff1a;N 和 M
* 第2..N&#43;1行: 第i&#43;1行为2个用空格隔开的整数&#xff1a;W_i、D_i&#xff0c;分别为第i块宝石 的重量与能为贝茜增加的魅力值
Output
* 第1行: 输出1个整数&#xff0c;表示按照镶嵌要求&#xff0c;贝茜最多能增加的魅力值
Sample Input
1 4
2 6
3 12
2 7
输入说明:
贝茜收集了4块宝石&#xff0c;她能忍受重量最大为6的手镯。
Sample Output
输出说明:
贝茜把除了第二块宝石的其余所有宝石都镶上手镯&#xff0c;这样她能增加
4&#43;12&#43;7&#61;23的魅力值&#xff0c;并且所有宝石的重量为1&#43;2&#43;3 <&#61; 6&#xff0c;同样符合要求。
HINT
Source
Silver