题解 | #【模板】01背包#

【模板】01背包

https://www.nowcoder.com/practice/fd55637d3f24484e96dad9e992d3f62e

#include <bits/stdc++.h>
using namespace std;
const int N = 1e6+10;
int main() {
    int n, nv;
    cin >> n >> nv;
    vector<int>v(n, 0), w(n, 0);
    // 这里的取值是关键
    vector<int>dp(nv + 1, -N);

    for(int i = 0; i < n; i++)
    cin >> v[i] >> w[i];

    dp[0] = 0;
    for(int i = 0; i < n; i++)
    {
        for(int j = nv; j >= v[i]; j--)
        {
            dp[j] = max(dp[j], dp[j - v[i]] + w[i]); 
        }
    }
    int m = *max_element(dp.begin(), dp.end());
    cout << m << endl;

    if(dp[nv] < 0)dp[nv] = 0;
    cout << dp[nv];
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

09-01 09:00
已编辑
四川旅游学院 运营
牛客55195891...:主要是专业不好,别的没毛病
牛客解忧铺
点赞 评论 收藏
分享
10-21 00:37
已编辑
门头沟学院 C++
小浪_Coding:你问别人,本来就是有求于人,别人肯定没有义务免费回答你丫, 有点流量每天私信可能都十几,几十条的,大家都有工作和自己的事情, 付费也是正常的, 就像你请别人搭把手, 总得给人家买瓶水喝吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务