
01背包
代码随想录
代码随想录网站:https://programmercarl.com
展开
-
poj Washing Clothes挺好的一道01背包
这道题算是01背包的的灵活运用吧!!!挺好的一道题,先说说思路,先用结构体存时间,和衣服颜色 再将颜色排个序,一样的颜色放一起,然后将同一种的颜色时间加一起sum,sum在除2,对这个进行01背包,尽量能取到sum的中间值,这样消耗的时间最少。#includeusing原创 2011-08-17 18:44:42 · 938 阅读 · 0 评论 -
poj 3628 Bookshelf 2 01背包!!!
01背包之后,dp[i]里面是所有组合到i的最优值,所以筛选一下就行了#include using namespace std; int main(){ int a[30],dp[1000005]; int n,b; while(cin>>n>>b) { int sum=0; for(int i=0;i<n;i++) { scanf("%d原创 2011-12-01 09:33:30 · 1557 阅读 · 0 评论 -
hdu 2546 饭卡 01背包
先将前n-1个从小到大排序,对m-5进行01背包,然后答案就是m-dp[m-5]-a[n-1]至于为什么最后减去最贵的菜品,而不是把最贵的菜品也放到01背包里呢,因为如果可以把最贵菜品a[n-1]可以放到背包里,那么其他菜品a[i]也一定可以放在背包里(背包的容量为m-5),最后都是减去a[i]+a[n-1],所以可以吧最贵的菜品不放入背包,直接最后减去原创 2014-07-31 10:37:25 · 997 阅读 · 0 评论 -
hdu 3466 Proud Merchants
这道题对q-p进行从小到大排序,举一个比较直观的例子:4 205 15 208 12 192 16 219 11 13按照q-p排序后每行dp的变化0 0 0 0 0 0 0 0 0 0 0 13 13 13 13 13 13 13 13 13 13 0 0 0 0 0 0 0 0 0 0 0 13 19 19 19 19 19 19 19 32 32 0 0原创 2014-07-31 15:05:48 · 832 阅读 · 0 评论 -
hdu 1864 最大报销额 模型为简单的01背包
很简单的01背包,但是题目还是很蛋疼的注意题目中600,和1000这两个数,还有就是double和int的转换,1A了感觉还是不错的/************************************************************************* > File Name: hdu1864.cpp > Author: yang > Mail:8261230原创 2014-08-24 11:00:44 · 1195 阅读 · 0 评论 -
hdu Robberies 2955 01背包
第一次果断吧概率当成背包了,放大100000倍,而且强多家银行的概率是相乘,不是相加啊将抢的钱数当成背包转移公式:dp[j]表示在能抢到j百万的时候成功的最大概率dp[j]=max(dp[j],dp[j-m[i]]*(1-p_bank[i]));/********************************************************************原创 2014-08-23 13:36:05 · 1000 阅读 · 0 评论