您的位置:首页 > 其它

南阳理工OJ_题目311 完全背包

2014-04-30 12:36 302 查看
//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;
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: