Nyoj 860 又见01背包[背包变形]
2013-11-03 16:36
155 查看
一、先总结周赛。
第一,思路的全面性,这次真的做的比较好,考虑的比较周全。
第二,思路的真确性,全面性固然的必须的,但是,正确性更加重要,这是我这次犯的最大的错误,想当然的认为自己的那一点是正确的。直接悲剧到最后。
第三,头脑的灵活,我越发的发现自己太固执了,以至于我都有点呆板了,我擦,这是相当的不好的。5个小时,我没有在开新题,这个问题是相当的严重的。
二、B题 打开链接
这题,一看我擦,小兴奋,简单的01背包。又一看数据范围,黑了我一脸。最大价值是10^9,这咋开数组?好吧,果断先不写,去找好的题(简单)。
比赛5个小时,被我卡在了5个小时的F题,需要极大的反思。
比赛完在看这题,我真的傻了。没有仔细的观察数据。还有对动态规划的羸弱。对背包的羸弱。
思路,如果仔细观察数据可以看出,可以获得的最大价值是比较小的。那么可以对价值和重量来进行互换位置,各种体味自己理解。
不说什么,直接代码:
好好反思自己的这次的失败。
三、还有一个问题,被我提出来了。
我们怎样把已经学过的知识与相似的知识进行转化,能够把学过的知识和其相似的知识点能过转化。达到,没有学过,但是也是可以想到的。这个问题很的值得去思考。
第一,思路的全面性,这次真的做的比较好,考虑的比较周全。
第二,思路的真确性,全面性固然的必须的,但是,正确性更加重要,这是我这次犯的最大的错误,想当然的认为自己的那一点是正确的。直接悲剧到最后。
第三,头脑的灵活,我越发的发现自己太固执了,以至于我都有点呆板了,我擦,这是相当的不好的。5个小时,我没有在开新题,这个问题是相当的严重的。
二、B题 打开链接
这题,一看我擦,小兴奋,简单的01背包。又一看数据范围,黑了我一脸。最大价值是10^9,这咋开数组?好吧,果断先不写,去找好的题(简单)。
比赛5个小时,被我卡在了5个小时的F题,需要极大的反思。
比赛完在看这题,我真的傻了。没有仔细的观察数据。还有对动态规划的羸弱。对背包的羸弱。
思路,如果仔细观察数据可以看出,可以获得的最大价值是比较小的。那么可以对价值和重量来进行互换位置,各种体味自己理解。
不说什么,直接代码:
#include<cstdio> #include<cstring> #define Min(a,b) a>b?b:a using namespace std; const int W=10005; int dp[W]; //W太大 int main() { // freopen("input.txt","r",stdin); int n,w; while(scanf("%d%d",&n,&w)!=EOF) { int sumv=0,a[W],b[W]; memset(dp,'a',sizeof(dp)); dp[0]=0; for(int i=1;i<=n;i++) {scanf("%d%d",&a[i],&b[i]);sumv+=b[i];} for(int i=1;i<=n;i++) for(int j=sumv;j>=b[i];j--) dp[j]=Min(dp[j],dp[j-b[i]]+a[i]); int max=0; for(int i=sumv;i>=0;i--) if(dp[i]<=w) {max=i;break;} printf("%d\n",max); } return 0; }
好好反思自己的这次的失败。
三、还有一个问题,被我提出来了。
我们怎样把已经学过的知识与相似的知识进行转化,能够把学过的知识和其相似的知识点能过转化。达到,没有学过,但是也是可以想到的。这个问题很的值得去思考。
相关文章推荐
- 设计模式:适配器模式(7.1.2)C++版
- CODE 104: Divide Two Integers
- android手机的刷机
- C++/C const问题
- 原子操作
- 排序 -- 总结
- SSH Without a Password(SSH无密码登录)
- 要静下心来好好科研了
- Android Fragment使用和学习
- 【KMP】hdu 1686 Oulipo(外:hdu 2203 亲和串)
- C#:Lambda 表达式
- 那些天,一个应届研究生在上海找工作
- ScreenCapture-HDwik5.0整合教程
- bat 导出mysql数据库数据
- mongodb的简单使用
- JavaScript日历选择器
- 美团笔试题--蓄水池蓄水量问题
- JavaScript中使用Substring删除字符串最后一个字符
- Hashtable
- Ubuntu 12.04如何修改背景色