摘要:
这题和典型的01背包求最优解不同,是要求第k优解,所以,最直观的想法就是在01背包的基础上再增加一维表示第k大时的价值。具体思路见下面的参考链接,说的很详细参考连接:http://laiba2004.blog.163.com/blog/static/8835120220138611342496/http://hi.baidu.com/chenyun00/item/1c6c44318acc8bfaa88428c7#include #include #include #include using namespace std;const int maxn=101;const int maxv=100 阅读全文
posted @ 2013-12-05 20:25
辰曦~文若
阅读(282)
评论(0)
推荐(0)
摘要:
题意:给你n个硬币,和n个硬币的面值。要求尽可能地平均分配成A,B两份,使得A,B之间的差最小,输出其绝对值。思路:将n个硬币的总价值累加得到sum, A,B其中必有一人获得的钱小于等于sum/2,另一人获得的钱大于等于sum/2。 因此用sum/2作为背包容量对n个硬币做01背包处理, 所能得到的最大容量即为其中一人获得的钱数。#include #include #include #include using namespace std;const int maxv=100*250+5;const int maxn=105;int dp[max... 阅读全文
posted @ 2013-12-05 15:12
辰曦~文若
阅读(159)
评论(0)
推荐(0)
摘要:
题意: 小A要去抢劫银行,但是抢银行是有风险的,因此给出一个float值P,当被抓的概率#include #include #include using namespace std;const int maxn=101;const int maxv=10005;float dp[maxv]; //求最大的不被抓概率float p; //被抓的概率要=money[i];j--){ dp[j]=max(dp[j],dp[j-money[i]]*prob[i]); } } int ans=0; //别忘了初始为0 ... 阅读全文
posted @ 2013-12-05 14:13
辰曦~文若
阅读(426)
评论(0)
推荐(1)
摘要:
01背包,由于要输出方案,所以还要在dp的同时,保存一下路径。#include #include #include /*AC01背包+输出方案答案不唯一,就像样例中的45 8 4 10 44 43 12 9 8 2题目给出的输出4 10 12 9 8 2 sum:45 输出43 2 sum:45 也是可以的题目中没要求按照什么顺序输出,输出一种方案即可*/using namespace std;const int maxm=25;const int maxn=10005;int n,m;int cd[maxm];int dp[maxn];struct Node{ in... 阅读全文
posted @ 2013-12-05 09:56
辰曦~文若
阅读(1008)
评论(0)
推荐(0)

浙公网安备 33010602011771号