摘要: 很有趣的一道题。简单分析一下可知: (1)如果所有的菜的总金额sum小于等于卡上金额value-5,我们可以购买所有的菜,并且最终余额是value-sum。 (2)如果所有的菜,除去最贵的菜,的金额sum-max小于等于value-5,我们可以先购买其他的菜,最终卡上金额必大于等于5,最后购买那道最贵的菜,使总金额最低,并且最终余额也是是value-sum,可与(1)条件合并。 (3)如果卡上金额小于5,啥也买不了,直接输出吧。 (4)如果都不符合,那就进入最复杂的处理了。先购买适量的菜,使卡内余额的金额大于等于且最接近5,最后购买最贵的菜就好了。子问题也就是01背包问题。 额,... 阅读全文
posted @ 2013-02-08 20:21 SF-_- 阅读(440) 评论(0) 推荐(0) 编辑
摘要: 01背包问题。以前没有做过,也没学过,所以在百度上学习了一下,链接:http://baike.baidu.com/view/841810.htm AC代码如下:#include <iostream>using namespace std;const int MAXLEN=1010;int f[MAXLEN];int c[MAXLEN];int w[MAXLEN];int main(){ int n,v,i,j,cas; cin>>cas; while(cas--) { cin>>n>>v; memset(f,0,sizeof(f)); ... 阅读全文
posted @ 2013-02-08 11:40 SF-_- 阅读(129) 评论(0) 推荐(0) 编辑