博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P1776 宝物筛选
阅读量:5116 次
发布时间:2019-06-13

本文共 1048 字,大约阅读时间需要 3 分钟。

这个题就快好多,这次打的代码相比较旅行商的背包,我用了预处理,先处理成01背包,然后直接dp。

没有在dp中进行,可能会快一点吧。

#include 
#include
#include
#include
using namespace std;const int maxn = 1e4 * 4 + 5;inline int read(){ char ch = getchar(); int f = 1 , x = 0; while(ch > '9' || ch < '0'){if(ch == '-')f = -1;ch = getchar();} while(ch >= '0' && ch <= '9'){x = (x << 1) + (x << 3) + ch - '0';ch = getchar();} return x * f;}int n,c,v,w,m,tot;long long value[maxn],size[maxn],f[maxn];int main(){ n = read(); c = read(); for(int i=1;i<=n;i++){ v = read(); w = read(); m = read(); for(int k=1;k<=m;k<<=1){ value[++tot] = k * v; size[tot] = k * w; m -= k; } if(m > 0){ value[++tot] = m * v; size[tot] = m * w; } } for(int i=1;i<=tot;i++) for(int j=c;j>=size[i];j--) f[j] = max(f[j] , f[j-size[i]] + value[i]); printf("%lld",f[c]); return 0;}

转载于:https://www.cnblogs.com/Stephen-F/p/9877689.html

你可能感兴趣的文章
团队开发之个人博客八(4月27)
查看>>
发布功能完成
查看>>
【原】小程序常见问题整理
查看>>
C# ITextSharp pdf 自动打印
查看>>
Kattis之旅——Number Sets
查看>>
【Java】synchronized与lock的区别
查看>>
django高级应用(分页功能)
查看>>
【转】Linux之printf命令
查看>>
关于PHP会话:session和cookie
查看>>
Chrome development tools学习笔记(3)
查看>>
软件过程的守护神
查看>>
NAT配置
查看>>
【翻译】Brewer's CAP Theorem CAP定理
查看>>
undefined与null
查看>>
redis总结
查看>>
解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问...
查看>>
STM32F10x_RTC秒中断
查看>>
[原创]网站HTML,XHTML,XML,WML,CSS等测试验证工具介绍
查看>>
4-28
查看>>
display:none和visiblity:hidden区别
查看>>