经典的完全背包问题
- 用max函数,结果TLE了
- 果然scanf和printf比cin,cout快多了
#include <cstdio>
#include <cstring>
int f[50001];
int c[2001],w[2001];
void completePack(int V,int i){
for(int v = c[i];v <= V;v++){
f[v] = f[v]>f[v - c[i]] + w[i]?f[v]:f[v-c[i]]+w[i];
}
}
int main() {
//freopen("in.txt", "r", stdin);
int N,m,V;
scanf("%d",&N);
while (N--) {
scanf("%d %d",&m,&V);
memset(f, 0x8f, sizeof(f));
f[0]=0;
for (int i = 1; i <= m; i++) {
scanf("%d %d", &c[i], &w[i]);
}
for (int i = 1; i <= m; i++) {
completePack(V, i);
}
if (f[V] > 0) {
printf("%d\n",f[V]);
}else{
printf("NO\n");
}
}
//fclose(stdin);
return 0;
}
我的博客园地址:zhaoGavin的博客园