【个人训练】(POJ1276)Cash Machine
来源:互联网 发布:linux网盘源码 编辑:程序博客网 时间:2024/06/06 08:45
最近的很多题解应该都是dp相关的了,emmm因为dp对我而言思考难度比较大,那么为了理顺自己的思路当然只能通过写blog整理了。愿我能成功搞定dp这个大关!(至少中等难度的dp要能够解决啊o(TヘTo))
题意分析
这条题目是一条明显的多重背包题目。遇到这种题目,我们首先简单的转化为01背包问题来解决。(思路:把
while(num-k>=0){ things[cnt++]=d*k; num-=k; k*=2;}if(num) things[cnt++]=d*num;
对于
解决了这个问题,多重背包问题就变成了01背包问题,贼鸡儿简单的那种。
代码
还是和网上的dalao代码很接近,因为思路是一样的。。。。菜到抠脚啊
#include <cstring>#include <algorithm>#include <iostream>#include <queue>#include <set>#include <map>#include <vector>using namespace std;typedef unsigned long long ull;bool dp[100005];int things[100005];int main(){ int cash,n; while(cin>>cash>>n) { memset(dp,false,sizeof(dp)); dp[0]=true; int d,cnt=0; for(int i=1;i<=n;++i) { int num,k=1; cin>>num>>d; while(num-k>=0) { things[cnt++]=d*k; num-=k; k*=2; } if(num) things[cnt++]=d*num; } for(int i=0;i!=cnt;++i) for(int j=cash;j>=things[i];--j) if(dp[j-things[i]]) dp[j]=true; int ans=cash; while(!dp[ans--]); cout<<ans+1<<endl; } return 0;}
阅读全文
0 0
- 【个人训练】(POJ1276)Cash Machine
- pOJ1276 Cash Machine(背包)
- poj1276(dp) Cash Machine
- POJ1276 Cash Machine(多重背包~~)
- poj1276 Cash Machine(多重背包)
- POJ1276 Cash Machine(多重背包)
- poj1276 Cash Machine(多重背包)
- poj1276 Cash Machine
- poj1276 Cash Machine
- poj1276 cash machine
- poj1276 - Cash Machine
- poj1276 Cash Machine
- POJ1276-Cash Machine .
- POJ1276 Cash Machine
- POJ1276 Cash Machine
- Cash Machine poj1276
- POJ1276 cash machine
- POJ1276 Cash Machine
- 洛谷P2380狗哥采矿,动态规划例题讲解
- poj 1741 Tree 树的点分治
- SQL SERVER 获取数据库中所有的表名及表中的数据量/查看每个数据库的链接打开数量
- python3 Note I
- 携带Cookie登入
- 【个人训练】(POJ1276)Cash Machine
- 14、C#里面的循环结构:while的使用
- 不一样的广告界面的切换
- zookeeper(1)
- Unix/Linux下的/etc目录
- CodeForces
- bzoj2064分裂
- 针对stm32 DMA传输AD数据,在完成中断后如何复位的问题的思考
- LFS+XShell