
贪心&背包
不可不戒
这个作者很懒,什么都没留下…
展开
-
hdu2111 Saving HDU (贪心)
#include #include struct node{ int pi,mi;}bao[102];int cmp(const void *x,const void *y){ return (*(struct node *)y).pi-(*(struct node *)x).pi;}int main(){ int n,v,i,sum; while(scanf("%原创 2013-07-16 19:38:15 · 809 阅读 · 0 评论 -
hdu2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 (多重背包)
#include #include #define MAXN 102int dp[MAXN],n,m;//多重背包void CompletePack(int v,int w)//完全背包{ int i; for(i=v;i<=n;++i) if(dp[i]<dp[i-v]+w) dp[i]=dp[i-v]+w;}void ZeroOnePack(int v,int原创 2013-07-26 16:31:11 · 793 阅读 · 0 评论 -
hdu2660 Accepted Necklace (二维背包)
二维费用的背包问题物品总个数的限制有时,“二维费用”的条件是以这样一种隐含的方式给出的:最多只能取M件物品。这事实上相当于每件物品多了一种“件数”的费用,每个物品的件数费用均为1,可以付出的最大件数费用为M。换句话说,设f[v][m]表示付出费用v、最多选m件时可得到的最大价值,则根据物品的类型(01、完全、多重)用不同的方法循环更新,最后在f[0..V][0..M]范围内寻找原创 2013-08-07 20:30:16 · 760 阅读 · 0 评论 -
hdu2159 FATE (二维完全背包)
#include #include #define MAXN 102int main(){ int n,m,k,s,h,i,j; int dp[MAXN][MAXN],val[MAXN],r[MAXN]; while(scanf("%d %d %d %d",&n,&m,&k,&s)!=EOF) { memset(dp,0,sizeof(dp)); for(i=1;i<=k原创 2013-08-07 21:04:32 · 549 阅读 · 0 评论 -
hdu3496 Watch The Movie (二维背包)
#include #include #define INF -999999#define MAXN 1002int dp[MAXN][102];int main(){ int test,i,j,k,N,M,L; int time[102],val[102]; scanf("%d",&test); while(test--) { scanf("%d %d %d",&N,原创 2013-08-07 21:46:28 · 636 阅读 · 0 评论 -
hdu1070 Milk
#include #include int main(){ int test,n,P,V,days,vmax; double avg,avgmin; char brand[102],ansBrand[102]; scanf("%d",&test); while(test--) { scanf("%d",&n); vmax=0; avgmin=100000.0;原创 2013-07-20 16:55:00 · 681 阅读 · 0 评论 -
hdu3732 Ahui Writes Word (多重背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3732#include #include #define MAXN 10002int dp[MAXN],cnt[12][12],C;void ZeroOnePack(int val,int complty){ int i; for(i=C;i>=complty;--i)原创 2013-08-13 10:31:12 · 708 阅读 · 0 评论 -
hdu1059 &poj1014 Dividing (多重背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1059#include #include #define MAXN 60002 int dp[MAXN],V; void ZeroOnePack(int val,int w) { int i; for(i=V;i>=val;--i) if(dp原创 2013-08-13 11:01:52 · 604 阅读 · 0 评论 -
hdu1789 Doing Homework again (贪心)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1789题解:贪心,reduced score最大最先完成#include #include #include #define MAXN 1002struct node { int deadline,score;}hwork[MAXN];int cmp(cons原创 2013-08-25 12:35:27 · 681 阅读 · 0 评论 -
hdu2955 Robberies (01背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2955最小风险概率=1-最大安全概率#include #include #define MAXN 10002double dp[MAXN],weight[MAXN];int val[MAXN];int main(){ int n,test,i,j,sum; d原创 2013-08-14 19:47:29 · 632 阅读 · 0 评论 -
各种背包问题
问题有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。算法这个问题变成了每组物品有若干种策略:是选择本组的某一件,还是一件都不选。也就是说设f[k][v]表示前k组物品花费费用v能取得的最大权值,则有:f[k][v]=max转载 2013-07-24 11:30:24 · 4272 阅读 · 0 评论 -
hdu2187 悼念512汶川大地震遇难同胞——老人是真饿了 (贪心)
#include #include #define MAXN 1002//贪心struct food{ int p,h;}rice[MAXN];int cmp(const void *x,const void *y){ return (*(struct food *)x).p-(*(struct food *)y).p;}int main(){ int n,m,i,原创 2013-07-26 18:09:52 · 803 阅读 · 0 评论 -
hdu4508 湫湫系列故事——减肥记I (完全背包)
#include #include #define MAXN 100002int dp[MAXN];int main(){ int i,j,n,m; int cal[102],val[102]; while(scanf("%d",&n)!=EOF) { memset(dp,0,sizeof(dp)); for(i=0;i<n;++i) scanf("%d %d"原创 2013-07-31 19:02:14 · 723 阅读 · 0 评论 -
hdu1114 Piggy-Bank (完全背包)
#include #include #define INF 10000000#define MAXN 10002 int dp[MAXN]; int main(){ int n,E,F,W,i,j,test; int w[502],val[502]; scanf("%d",&test); while(test--) { scanf("%d %d",&E,&F原创 2013-07-31 19:46:01 · 614 阅读 · 0 评论 -
hdu2124 Repair the Wall (贪心)
#include #include #define MAXN 602int cmp(const void *x,const void *y){ return *(int *)y-*(int *)x;}int main(){ int n,L,i,ans; int arr[MAXN]; _int64 sum; while(scanf("%d %d",&L,&n)!=EOF)原创 2013-07-19 22:05:41 · 1011 阅读 · 0 评论 -
hdu1712 ACboy needs your help (分组背包)
#include #include #define MAXN 102//分组背包int main(){ int n,m,i,j,k; int dp[MAXN],profit[MAXN][MAXN]; while(scanf("%d %d",&n,&m),(n||m)) { for(i=1;i<=n;++i) { for(j=1;j<=m;++j) scanf原创 2013-07-24 11:14:06 · 618 阅读 · 0 评论 -
hdu1257 最少拦截系统 (贪心)
#include #define MAXN 30002int main(){ int n,j,i,ans,hmax[MAXN],arr[MAXN]; while(scanf("%d",&n)!=EOF) { memset(hmax,0,sizeof(hmax)); for(i=0;i<n;++i) scanf("%d",&arr[i]); hmax[0]=0;原创 2013-07-26 19:30:00 · 737 阅读 · 0 评论 -
hdu2570 迷瘴 (贪心)
#include #include #include #define MAXN 102int cmp(const void *x,const void *y){ return *(int *)x-*(int *)y;}int main(){ int test,n,v,w,i,sum,cnt; int pi[MAXN]; scanf("%d",&test); while原创 2013-07-26 21:54:42 · 1063 阅读 · 0 评论 -
hdu1051 Wooden Sticks (贪心)
//贪心算法#include #include #include #define MAXN 5005using namespace std;struct node{ int len; int wht; int flag;}stick[MAXN];int cmp(struct node x,struct node y){ if(x.len!=y.len) re原创 2013-07-27 15:50:14 · 879 阅读 · 0 评论 -
hdu3177 Crixalis's Equipment (贪心)
#include #include #define MAXN 10002struct node{ int ai,bi; int val;//val=bi-ai}equipment[MAXN];int cmp(const void *x,const void *y){ return (*(struct node *)y).val-(*(struct node *)x).val原创 2013-07-27 16:22:46 · 754 阅读 · 0 评论 -
hdu2546 饭卡 (01背包)
#include #include #include #define MAXN 1002int cmp(const void *x,const void *y){ return *(int *)x-*(int *)y;}int Max(int x,int y){ if(x>y) return x; else return y;}int main(){ i原创 2013-07-27 19:16:20 · 680 阅读 · 0 评论 -
hdu2602 Bone Collector (01背包)
#include #include #define MAXN 1002//01背包struct node{ int vol,val;}bone[MAXN];int main(){ int N,V,test,i,j; int dp[MAXN]; scanf("%d",&test); while(test--) { memset(dp,0,sizeof(dp));原创 2013-07-27 19:42:26 · 632 阅读 · 0 评论 -
hdu1203 I NEED A OFFER! (01背包)
/*得到至少一份offer的最大概率对立事件:没有得到一份的最小概率*/#include #include #define MAXN 10002int main(){ int n,m,i,j; int ai[MAXN]; double pi[MAXN],dp[MAXN]; while(scanf("%d %d",&n,&m)) { if(n+m==0) break原创 2013-07-30 18:12:35 · 842 阅读 · 0 评论 -
hdu3466 Proud Merchants (01背包)
/*物品A(p1,q1) B(p2,q2)买AB需满足:p1+q2,p2+q1;选小的先买:p1+q2<p2+q1--->p1-q1<p2-q2 思路和hdu3177一样*/#include #include #include #define MAXN 502using namespace std;struct node { int P,Q,val;}iterm原创 2013-07-30 21:16:29 · 819 阅读 · 0 评论 -
hdu1171 Big Event in HDU (多重背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1171#include #include #define MAXN 250000 int dp[MAXN],V; void ZeroOnePack(int val,int w) { int i; for(i=V;i>=val原创 2013-09-02 11:41:18 · 710 阅读 · 0 评论