[01背包]NOIP 2005 PJ T3 采药 + 01背包的空间优化
2014-03-22 23:19
471 查看
原题:https://www.vijos.org/p/1104
时间:2014.3.22
类型:01背包
源码:
最后状态:AC
优化:
当我们算到f[i][j]的时候,f[i-2][...]已经没用了,那么怎么节省呢?
这样优化即可,f[i]表示容积为i时的最大价值,注意j>=a[i],不然j-a[i]会<0,就错了
时间:2014.3.22
类型:01背包
源码:
#include<cstdio> #include<iostream> #include<cstring> using namespace std; int a[101],c[101],f[101][10001]; int max(int x,int y) { if(x>y) { return x; } else { return y; } } int main() { int t,m; scanf("%d %d",&t,&m); for(int i=1;i<=m;i++) { scanf("%d %d",&a[i],&c[i]); } for(int i=1;i<=m;i++) { for(int j=t;j>=1;j--) { if(a[i]<=j) { f[i][j]=max(f[i-1][j],f[i-1][j-a[i]]+c[i]); } else { f[i][j]=f[i-1][j]; } } } printf("%d",f[m][t]); system("pause"); return 0; }
最后状态:AC
优化:
当我们算到f[i][j]的时候,f[i-2][...]已经没用了,那么怎么节省呢?
for(int i=1;i<=m;i++) { for(int j=t;j>=a[i];j--) { f[j]=max(f[j],f[j-a[i]]+c[i]); } }
这样优化即可,f[i]表示容积为i时的最大价值,注意j>=a[i],不然j-a[i]会<0,就错了
相关文章推荐
- 01背包一维优化(来源:NOIP2005普及组采药)
- noip2005 一维采药---非恰 (01背包)
- COGS 68. [NOIP2005] 采药【01背包复习】
- noip2005 二维采药---恰 (01背包)
- 01背包的空间优化
- 【noip2005】采药
- NOIP2005-普及组复赛-第三题-采药
- 【随机化】NOIP 2005 采药
- |Tyvj|NOIP2005|动态规划|P1005 采药
- 菜鸟都能理解的01背包问题(空间如何优化)
- [NOIP2005]采药
- NOIP普及组2005 采药 0-1背包
- 洛谷 P1048 Tyvj 1005 [NOIP2005 T3] 采药
- 关于01背包空间优化的理解
- NOIP2005-普及组复赛-第三题-采药
- 借用杭电饭卡问题来浅析 01背包问题空间复杂度的优化
- [NOIP2005] 采药-解题报告
- noip普及组2005 采药
- 【动态规划】Vijos P1104 采药(NOIP2005普及组第三题)
- [NOIP 2005PJ]采药 随机化贪心