类背包DP
文章平均质量分 51
turbo_7
无聊等于慢性自杀
展开
-
hdu2159 FATE
初看是背包问题,但没有往二位费用背包上想。对于最多的杀怪数为k的条件尝试增加一维,dp[i][j]中j表示已杀的怪的数目,得到状态转移方程dp[i][j]=max(dp[i][j],dp[i-1][j-b]+a),每种怪的数目不限,对于第一维[i]是完全背包问题,采用完全背包的顺序循环方式,这样看状态转移方程第二维[j]似乎不是表示已杀的怪的数目,思路在这被卡住了。翻看了一下背包九讲找到了这个问题原创 2013-05-11 17:14:13 · 506 阅读 · 0 评论 -
poj 1948 Triangular Pastures
#include #include #include #include using namespace std; bool dp[45][800][800]; int a[45]; int main(){ int n,i,j,k; int total=0; scanf("%d",&n); for(i=1;i<=n;i++){ scanf("%d",&a[i]); total+=a[原创 2014-04-14 19:53:15 · 494 阅读 · 0 评论 -
CF A. Dynasty Puzzles
这题像背包,每组名字的长度是物品的价值,背包的rong原创 2014-05-03 18:41:52 · 787 阅读 · 0 评论 -
poj 1276 多重背包
一种优化方法思路来自于hdu2844 Coins原创 2014-04-16 14:26:03 · 373 阅读 · 0 评论 -
sdut2408 Pick apples(山东第三届省赛)
#include #include #include using namespace std; int dp[1000005]; int gcd(int a,int b){ if(b==0) return a; return gcd(b,a%b); } int lcm(int a,int b){ return a/gcd(a,b)*b; } int main(){ int原创 2014-05-02 23:30:03 · 500 阅读 · 0 评论 -
poj 3624 01背包 水
水 #include #include using namespace std; int dp[12890]={0}; int main(){ int n,m; int w,d; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++){ scanf("%d%d",&w,&d); for(int j=m;j>=w;j--) if(dp[j-w]+原创 2014-04-16 14:28:39 · 394 阅读 · 0 评论 -
hdu4003 Find Metal Mineral
#include #include #include #define M 10010 using namespace std; struct node{ int to,val,next; }edge[M*2]; int head[M],tot; int dp[M][11],cost[M]; int n,s,k; void insert(int u,int v,int val){ e原创 2013-09-09 13:48:53 · 506 阅读 · 0 评论 -
hdu2078
看完题就往类背包DP上想了,看了discuss才意识到这题根本没那么麻烦 #include #include using namespace std; int main(){ int t; int n,m; int a; scanf("%d",&t); while(t--){ int minn=105; scanf("%d%原创 2013-08-07 15:08:12 · 730 阅读 · 0 评论 -
poj2576 tug of war
二维费用背包,不能使用滚动数组!#include #include #include #define max(x,y) (x>y?x:y) using namespace std; int f[51][23000],a[101]; int main(){ int n,i,j,k; scanf("%d",&n); int side=(n+1)/2,sum=0; for(i=1;i<=n;i+原创 2013-05-19 16:22:25 · 738 阅读 · 0 评论 -
hdu2844 Coins
在discuss里看到的这个方法,不需要二进制优化,也不需要单调队列优化,仅需增加一个数组记录每个coin使用的个数,既好写有好理解,话说那个高端大气的单调队列优化各种复杂抽象难以理解,膜拜ing。 #include #include #include using namespace std; int n,m; int a[105],c[105],used[100010]; bool f[1原创 2013-06-07 10:42:44 · 533 阅读 · 0 评论 -
poj2184 Cow Exhibition
01背包的变形,需要注意的地方很多。 很炫的代码来自这位大神http://www.cnblogs.com/rainydays/archive/2012/07/04/2576077.html 代码很高效,边界控制很值得学习 #include #include #include #define INF 0x3f3f3f3f #define maxs 2000*100 #define shift原创 2013-05-05 23:44:19 · 431 阅读 · 0 评论 -
hdu 4739 Zhuge Liang's Mines
#include #include #include #include #include using namespace std; struct node{ int x,y; }a[22]; vector mine; int dp[(1<<20)+2]; int n; bool cmp(node a,node b){ if(a.x==b.x) return a.y原创 2014-04-21 18:30:20 · 563 阅读 · 0 评论