
多重背包问题 II(Acwing 5,二进制优化多重背包 + 单调队列优化多重背包)
发布日期:2021-05-04 06:49:47
浏览次数:18
分类:技术文章
本文共 1854 字,大约阅读时间需要 6 分钟。
一.题目链接:
二.题目大意:
多重背包
三.分析:
做个笔记,偷笑.
立下 flag:这次我要学好 DP!!!
四.代码实现:
二进制优化
#includeusing namespace std;const int M = (int)2e3;int dp[M + 5];struct node{ int v, w;};vector vec;int main(){ int n, m; cin >> n >> m; for(int i = 1, v, w, s; i <= n; ++i) { cin >> v >> w >> s; for(int j = 1; s >= j; j<<= 1) { s -= j; vec.push_back({v * j, w * j}); } if(s) vec.push_back({v * s, w * s}); } for(auto i: vec) { for(int j = m; j >= i.v; --j) { dp[j] = max(dp[j], dp[j - i.v] + i.w); } } cout << dp[m] << "\n"; return 0;}
单调队列优化
#includeusing namespace std;const int M = (int)2e4;const int inf = 0x3f3f3f3f;int q[M + 5];int dp[M + 5];int cal(int u, int k, int v, int w){ return dp[u + k * v] - k * w;}int main(){ int n, m; scanf("%d %d", &n, &m); memset(dp, -inf, sizeof(dp)); dp[0] = 0; for(int i = 1, v, w, c; i <= n; ++i) { scanf("%d %d %d", &v, &w, &c); for(int u = 0; u < v; ++u) { int l = 1, r = 0; int mx = (m - u) / v; for(int k = mx - 1; k >= max(mx - c, 0); --k) { while(l <= r && cal(u, k, v, w) >= cal(u, q[r], v, w)) --r; q[++r] = k; } for(int p = mx; p >= 0; --p) { while(l <= r && q[l] > p - 1) ++l; if(l <= r) dp[u + p * v] = max(dp[u + p * v], p * w + cal(u, q[l], v, w)); if(p - 1 - c >= 0) { while(l <= r && cal(u, p - 1 - c, v, w) >= cal(u, q[r], v, w)) --r; q[++r] = p - 1 - c; } } } } int ans = 0; for(int i = 1; i <= m; ++i) ans = max(ans, dp[i]); printf("%d\n", ans); return 0;}
发表评论
最新留言
不错!
[***.144.177.141]2025年03月11日 19时53分25秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
考研英语阅读12种解题技巧!快来马!
2019-03-03
报录比48:1,上海985同济大学去年计算机考研报录比好高!
2019-03-03
引热议!这些高校开学后封闭式管理
2019-03-03
【调剂】上海应用技术大学2021年硕士研究生招生考试调剂信息
2019-03-03
【调剂】天津理工大学2021年硕士研究生调剂服务系统开放时间(持续更新)
2019-03-03
【调剂】云南大学2021年硕士研究生招生调剂通知
2019-03-03
误导学生?各类计算机大学排名有多么不靠谱!
2019-03-03
2021QS计算机专业排名发布:MIT斯坦福霸榜,清华北大进入前20
2019-03-03
全部改考408!华中科技大学计算机学院
2019-03-03
wxpython配合MySQL数据库完成用户登录页面的设计
2019-03-03
JavaScript学习手册(45)
2019-03-03
【SSL 1456】骑士旅行【广搜 BFS】
2019-03-03
【纪中2020.5.2日】模拟赛题解
2019-03-03
【纪中2020.5.06日】模拟赛题解
2019-03-03
eclipse中server location灰色解决
2019-03-03
idea 写web项目图片不显示
2019-03-03
实用网站推荐
2019-03-03
idea中写mybatis报错
2019-03-03
RestFul 风格
2019-03-03