男人八题coins
2015-10-25 22:56
239 查看
DP 不算正式的多重背包但用到了思想,用数组标记能够得到的价值,可以水过去,物品可以用二进制优化加快效率;不断更新就行了。
#include<cstdio> #include<cstring> #include<queue> #include<stack> #include<set> #include<cstdlib> using namespace std; int i,j,k,va[200],am[200],dp[100005],sum[100005],ans,n,m; int main() { while(scanf("%d%d",&n,&m),n+m) { ans = 0; memset(dp,0,sizeof(dp)); dp[0] = 1; for(i=0;i<n;i++) scanf("%d",&va[i]); for(i=0;i<n;i++) scanf("%d",&am[i]); for(i=0;i<n;i++) { memset(sum,0,sizeof(sum)); //更新每个价值状态下该物品所用个数; for(j=va[i];j<=m;j++) { if(dp[j-va[i]]&&!dp[j]&&sum[j-va[i]]<am[i]) { ans ++; dp[j] = 1; sum[j] = sum[j-va[i]]+1; //更新该价值为可以得到且更新所用该物品所用数量 } } } printf("%d\n",ans); } return 0; }
相关文章推荐
- 九度OJ 1165:字符串匹配 (模式匹配)
- C语言:字符串的常用函数 !
- 九度OJ 1165:字符串匹配 (模式匹配)
- iOS开发--OC对象模型你必须知道的几条规则
- 带你玩转Visual Studio——带你理解多字节编码与Unicode码
- Contains Duplicate leetcode
- C语言笔记(二维数组与数值指针)
- 经典语录收录(2)
- Codeforces Round #327 (Div. 2) B Rebranding(映射)
- 大道至简第四章
- [Leetcode]3Sum Closest
- java类集
- Objective-C description的用法
- matlab 2014a的入门学习(1)周总结
- 王爽 汇编语言 实验9:显示解答
- 对话框形式的activity
- 在C语言的库函数中就有快速排序的库函数,即为qsort
- 九度OJ 1164:旋转矩阵 (矩阵运算)
- CodeBlocks常用操作快捷键
- 第四次课后实验