![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
背包问题
hzasrd
这个作者很懒,什么都没留下…
展开
-
hdu2546饭卡
中文题目,题意就不说了,都能看懂。 转换一下就是一个背包问题。先把最大值去掉,用剩余的钱来买东西。可以把剩余的钱看作背包的体积,每一样饭菜看作每一个物品的体积,求背包里最多可以装多少东西就可以了。最后用背包剩余的体积减去最大值就行了。 代码如下: #include #include #include int cmp(const void *a,const void *b) { ret原创 2016-05-21 16:53:07 · 297 阅读 · 0 评论 -
hdu2602 Bone Collector(01背包问题)
最简单最基础的背包问题,完全可以套用模版。题意为给一堆已知体积已知价值的骨头,从中挑选几根放在一个背包里,使得所选骨头的价值之和最大。给你一个已知体积的背包,再给出骨头的数量,让求解。 很典型的一个背包问题,可以逆向选择推解。状态转移方程为dp[i][j]=dp[i+1][j](j=v[i]);此处的i代表第i个背包,j代表此时背包内还剩余的体积为多少。 代码如下: #include #in原创 2016-05-16 21:22:03 · 270 阅读 · 0 评论 -
算法模板之01背包问题
二维数组的写法: int w[N],p[N]; int dp[M][N]; for(int i=0; i<n; i++) for(int j=0; j<=m; j++) if(j<w[i]) dp[i+1][j]=dp[i][j]; else dp[i+1][j]=max(dp[i][j],dp[i][j-w原创 2017-08-29 16:46:01 · 344 阅读 · 0 评论 -
51nod 1007 正整数分组(类背包)
1007 正整数分组 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 将一堆正整数分为2组,要求2组的和相差最小。 例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1,是所有方案中相差最少的。 Input 第1行:一个数N,N为正整数的原创 2017-08-31 09:58:11 · 236 阅读 · 0 评论