//0.0这段时间被背包问题搞迷了...
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int T;
int m, v;
int c[2010];
int w[2010];
int d[50010];
cin >> T;
while(T--)
{
cin >> m >> v;
for(int i = 1; i <= m; i++)
cin >> c[i] >> w[i];
//memset(d, -1, sizeof(d));
d[0] = 0;
for(int i = 1; i <= v; i++)
d[i] = -1 << 30;
for(int i = 1; i <= m; i++)
for(int j = c[i]; j <= v; j++)
d[j] = d[j] > d[j-c[i]] + w[i] ? d[j] : d[j-c[i]] + w[i];
if(d[v] < 0)
cout << "NO" << endl;
else
cout << d[v] << endl;
}
}
南阳理工OJ_题目311 完全背包
最新推荐文章于 2019-04-06 10:46:15 发布