
---------背包
文章平均质量分 73
Stayaccept
这个作者很懒,什么都没留下…
展开
-
Codeforce 742D(01背包)
链接:点击打开链接题意:一共N个人,每个人对应有一个重量和价值,已知M个朋友关系,朋友圈中的人要么都选,要么选一个人,当然也可以一个都不选,现在要分配一个方案,使得重量和在w内,价值最大代码:#include #include #include #include #include #include #include #include using namespace std;原创 2016-12-13 11:09:26 · 489 阅读 · 0 评论 -
hdu3449(有限制条件的01背包)
链接:点击打开链接题意:有n种物品,和w块钱,买一种物品必须先买那一种物品的购物车,问最大所获得的价值代码:#include #include #include #include #include #include using namespace std;int p[105],dp[55][100005];struct node{ int v,w;};vecto原创 2016-06-09 12:59:26 · 1489 阅读 · 0 评论 -
hdu5445(两次多重背包)
链接;点击打开链接题意:有n种甜点,每种都有三个属性(能量,空间,数目),有m辆卡车,每种都有是三个属性(空间,花费,数目),问至少运输p能量的甜点,花费最小是多少代码:#include #include #include #include #include using namespace std;const int INF=0x3f3f3f3f;int n原创 2016-05-18 19:48:16 · 1036 阅读 · 0 评论 -
hdu5188(带限制条件的01背包)
链接:点击打开链接题意:有n道题,给出每道题的用时和得分,并且要求在li时间之前不能做出来第i道题,而且一道题不能分开几次做,问至少得到w分需要最少用多长时间代码:#include #include #include #include #include using namespace std;struct node{ int t,v,l; f原创 2016-05-16 16:39:25 · 1873 阅读 · 0 评论 -
hdu3236(带限制条件的二维01背包)
链接:点击打开链接题意:有两张卡,卡上的钱不能合并消费,买东西的时候物品有三个属性,价格,开心值,和是否必须购买,有一次免费拿一件东西的机会,求在买完所有必须买的商品后,获得的最大的开心值,如果不能买完所有必须买的物品则输出-1代码:#include #include #include #include #include #include using names原创 2016-05-13 13:32:45 · 1073 阅读 · 0 评论 -
hdu4815(01背包)
链接:点击打开链接题意:给出N道题,和一个概率P,然后给出每道题对应的得分a[i],两个人来答题,一个人是每道题答对的概率为0.5,问另一个人至少要答多少分才能保证有P的概率不会失败代码:#include #include #include #include #include using namespace std;long long v[45],dp[4000原创 2016-05-13 13:20:19 · 961 阅读 · 0 评论 -
poj1015(dp输出路径)
链接:点击打开链接题意:有n个人,每个人有一个D值和P值,求选出m个人,使得|∑(D)-∑(P)|最小,如果最小值相同,则选择|∑(D)+∑(P)|较大的,输出选出的人和∑(D),∑(P)代码:#include #include #include #include #include #include using namespace std;vector pa原创 2016-05-05 20:38:51 · 955 阅读 · 0 评论 -
hdu3092(数论+完全背包)
链接:点击打开链接题意:将一个数拆分成几个数的和,并求出这几个数最小公倍数模M后的最大值代码:#include #include #include #include #include #include using namespace std;double dp[3005];int ans[3005],num[505],prime[3005];int原创 2016-05-03 21:09:12 · 1454 阅读 · 0 评论 -
zoj3769(分组背包)
链接:点击打开链接题意:有13种装备,每种装备只能选一个,每种装备有一个伤害值和防御值,其中如果选Two-Handed的话就不能选Shield和Weapon,Finger可以选两个。求怎样选择,使得在防御值达最小到m的情况下,伤害总值最大。代码:#include #include #include #include #include #include #incl原创 2016-04-24 12:20:38 · 1150 阅读 · 7 评论 -
hdu1059(多重背包)
链接:点击打开链接题意:给出价值为1~6的硬币的金额,问是否正好能够取出总价值一半的硬币代码:#include #include #include #include #include using namespace std;int a[10],used[200005],f[200005];int main(){ int i,j,cas,sum,si原创 2016-04-06 21:04:12 · 489 阅读 · 0 评论 -
zoj3662(01背包+预处理)
链接:点击打开链接题意:有K个正整数,和为N,最小公倍数为M,为有多少种可能的情况代码:#include #include #include #include using namespace std;const int MOD=1000000007;int gcd(int a,int b){ if(b==0) return a; r原创 2016-04-05 20:48:46 · 680 阅读 · 0 评论 -
hdu3448(dfs解二维背包)
链接:点击打开链接题意:有k个物品,背包容量是m,问最多装n个物品最大的重量(k代码:#include #include #include #include #include using namespace std;int n,k,w,ans,a[50];void dfs(int t,int num,int sum){ ans=max(ans,sum); if原创 2016-06-09 15:29:36 · 634 阅读 · 0 评论 -
hdu3466(排序+01背包)
链接:点击打开链接题意:给出n个物品,和容量为m的背包,第i个物品的重量为p[i],价值为v[i],但必须当前背包的容量大于q[i]才可以放这个物品呢,求最大的价值代码;#include #include #include #include #include using namespace std;struct node{ int p,q,v; friend b原创 2016-06-13 16:26:24 · 1460 阅读 · 0 评论 -
Codeforce 730J(贪心+01背包)
链接:点击打开链接题意:给n个瓶子,给出每个瓶子剩余水的容量和每个瓶子的体积,问最少需要使用的瓶子数量能装完剩下全部的水,每次改变1单位的水花费1单位时间,并输出最少时间代码:#include #include #include #include #include using namespace std;int dp[105][10005];struct node{原创 2016-12-05 13:21:57 · 574 阅读 · 0 评论 -
Codeforce 632E(背包变形)
链接:点击打开链接题意:给出n个物品的价值,每个物品可以选择任意次,求恰好选择k次所有价值的情况代码:#include #include #include #include #include #include #include using namespace std;const int INF=0x3f3f3f3f;int a[1005],dp[1000005];int原创 2016-10-12 15:07:27 · 561 阅读 · 0 评论 -
hdu5887(搜索解01背包+奇怪的剪枝)
链接:点击打开链接题意:大数据采药代码:#include #include #include #include #include using namespace std;long long n,w,ans;struct node{ long long a,b; friend bool operator<(node x,node y){ retu原创 2016-09-19 12:05:47 · 868 阅读 · 0 评论 -
hdu4968(分组背包)
链接:点击打开链接题意:给出每个成绩的绩点,给出n科的平均成绩,求n科的最大和最小平均绩点代码:#include #include #include #include #include using namespace std;const int INF=0x3f3f3f3f;int a,b;double ans1,ans2;double v[105],dp[105][10原创 2016-07-29 15:54:16 · 459 阅读 · 0 评论 -
hdu4395(01背包)
链接:点击打开链接题意:给出n个数,要求选出一些数加和使得加和最接近D,要求加和的过程中和不等大于等于2代码:#include #include #include #include #include using namespace std;int a[205],dp[250005];int main(){原创 2016-07-23 19:05:24 · 408 阅读 · 0 评论 -
hdu4341(分组背包)
链接:点击打开链接题意:模拟黄金矿工,给出每个金子的位置和所需时间,计算在给定时间内最大收益,如果在同一条直线上必须先抓近的才能够抓远的代码:#include #include #include #include #include #include using namespace std;struct node{ int x,y,tim,val; friend原创 2016-07-18 11:58:40 · 430 阅读 · 0 评论 -
hdu3602(背包变形)
链接:点击打开链接题意:N个国家,M个飞船每个飞船的容量是K,每个国家有a[i]+1个人,价钱是b[i],必须按照顺序上船,问获得的最大价钱代码:#include #include #include #include #include #include using namespace std;const int INF=0x3f3f3f3f;int a[105],b[205原创 2016-07-13 15:57:50 · 570 阅读 · 0 评论 -
hdu5410(01背包+完全背包)
链接:点击打开链接题意:给一个容量是m的背包,有n种物品,给出每种物品的体积,买x个第i种物品则会获得A[i]*x+b[i]个糖,问怎么买能使获得的糖最多代码:#include #include #include #include #include using namespace std;long long dp[2005],w[2005],a[2005],b[2005];i原创 2016-07-12 13:05:40 · 413 阅读 · 0 评论 -
hdu3578(01背包)
链接:点击打开链接题意:在n个数中取两部分最大相等的值并输出代码:#include #include #include #include #include using namespace std;int a[2005],dp[105][4005];int main(){ //dp[i][j]表示到第i个物原创 2016-06-29 21:05:33 · 530 阅读 · 0 评论 -
poj1717&&vijos p1222(背包变形)
链接:点击打开链接题意:给出两个数组a和b,求变化最少的次数来调换a[i]和b[i]使得∑(a[i]-b[i])的绝对值最小代码:#include #include #include #include #include #include using namespace std;const int INF=0x3f3f3f3f;int a[1005],b[1005],dp[2原创 2016-09-04 15:43:09 · 480 阅读 · 0 评论 -
poj2063(容量变化的背包)
链接:点击打开链接题意:给你一笔钱,现在要拿这笔钱去投资,有t种股票,每种股票有一个价值和年收益,输出在n年后获得最大收益代码:#include #include #include #include #include using namespace std;int v[105],w[105];int dp[1500000];int main(){原创 2016-03-29 12:32:04 · 502 阅读 · 0 评论 -
hdu2126(01背包)
链接:点击打开链接题意:给出n个物品的价值,并且每个物品只能买一次,求m元最多买到的物品的数量和当前数量的种类代码:#include #include #include #include #include using namespace std;int v[35],dp[35][35][505]; //dp[i][j][原创 2016-03-17 21:20:09 · 750 阅读 · 5 评论 -
poj1014(多重背包)
链接:点击打开链接题意:有价值为1,2,3,4,5,6的6种物品,输入6个物品的数量,问能不能将物品分成价值相等的两份(物品不能分割)代码:#include #include #include using namespace std;bool f[500005];int w[10],v[10],used[500005];int main(){ int原创 2016-02-21 23:14:04 · 692 阅读 · 0 评论 -
Codeforce 106C(多重背包)
链接:点击打开链接题意:有两种原料,m种面包,每种面包可以由bi克原料B和ci克原料A组成,能够产生di的价值,也可以只有c0克原料A生产,产生d0的价值,给出第A种原料N克,每种面包自带ai克原料B(只能供当前这种面包使用),问最大产生多少价值代码:#include #include #include #include using namespace std;in原创 2015-12-24 18:31:26 · 478 阅读 · 0 评论 -
vijos p1470(递推)
链接:点击打开链接题意:教主有着一个环形的花园,他想在花园周围均匀地种上n棵树,但是教主花园的土壤很特别,每个位置适合种的树都不一样,一些树可能会因为不适合这个位置的土壤而损失观赏价值。教主最喜欢3种树,这3种树的高度分别为10,20,30。教主希望这一圈树种得有层次感,所以任何一个位置的树要比它相邻的两棵树的高度都高或者都低,并且在此条件下,教主想要你设计出一套方案,使得观赏价值之和最高。原创 2016-09-12 10:58:55 · 417 阅读 · 0 评论 -
poj2392(多重背包)
链接:点击打开链接题意:给出K个方块的高度,数量和最高能够放多高,求出最大能放多高代码:#include #include #include #include using namespace std;struct node{ int h_i,a_i,c_i;};bool cmp(node x,node y){ return x.a_i<y.a_i;}nod原创 2015-11-30 20:54:18 · 900 阅读 · 0 评论 -
poj1742(多重背包)
链接:点击打开链接题意:给出n种钱的数量和面额,问用这些钱能拼成1~m中的值的数量代码1:#include #include #include #include using namespace std;int dp[100005],w[105],v[105];int n,m;int main(){ int i,j,ans; while(scanf("%d%d"原创 2015-11-30 20:44:00 · 684 阅读 · 0 评论 -
poj1745(01背包)
链接:点击打开链接题意:给出N个数,这N个数中每个数必须用1次,做加减运算,求最后结果是否能整除K代码:#include #include #include #include #include using namespace std;int dp[10005][105],s[10005]; //dp[i][j]代表前i个数做运算后余数是否等于ji原创 2015-09-11 21:18:00 · 1077 阅读 · 0 评论 -
poj3211(01背包)
链接:点击打开链接题意:有N件衣服,M种颜色,夫妻二人可以同时一人洗一件衣服,为了防止衣服被染色,只能洗完一种颜色的衣服后再洗其余颜色的衣服,问花费时间最少是多少代码:原创 2015-09-11 21:13:25 · 702 阅读 · 0 评论 -
hdu1059(01背包)
链接:点击打开链接题意:有六个物品价值分别为1~6,依次给出六个物品的数量,问是否能平均分成价值相等的两份代码:#include #include #include #include //#define maxx(a,b) (a>b?a:b)using namespace std;int a[10],w[100005],dp[100005];int main(){ i原创 2015-09-10 20:34:21 · 1302 阅读 · 0 评论 -
hdu2955(01背包)
链接:点击打开链接题意:抢银行,给出一个被抓的概率的上限(超过这个概率则被抓),然后给出几组数据分别为物品的价值和被抓的概率,求在不被抓的情况下能取得的最大价值; 代码:#include#include#include#include#includeusing namespace std;double dp[10005],v[10005];int m[10005]原创 2015-07-02 11:39:12 · 480 阅读 · 0 评论 -
UVALive3637(01背包+贪心)
链接:点击打开链接题意:给出n本书的高和宽,要求做一个三层的书架,将所有书放入书架中,每层不能为空,每层的高度为当层最高的数的高度,当层的宽度为当层所有书的宽度和,书架的宽度为三层的最大宽度,书架的高度为三层的高度和,求书架高度乘宽度的最小值代码:#include #include #include #include #include using namespace std;c原创 2016-08-30 11:30:43 · 504 阅读 · 0 评论 -
hdu1171(多重背包)
链接:点击打开链接题意:给出每个物品的价值和数量,如何分配使得A,B所得价值最接近并且A的价值不能小于B代码:#include #include #include #include using namespace std;int v[10005],w[10005],dp[500005];int main(){ int n,i,j,k,num,tmp,s原创 2016-02-23 22:09:20 · 537 阅读 · 0 评论 -
poj1276(多重背包)
链接:点击打开链接题意:给出一个价值sum,然后给出n钱币的个数与价值,要求用这些钱币组成一个最接近sum的值(总和不大于sum)代码:#include #include #include #include using namespace std;bool f[100005];long long v[105],w[105],used[100005];int原创 2016-02-23 22:14:32 · 513 阅读 · 0 评论 -
poj2184(负权01背包)
链接:点击打开链接题意:给一些牛,每个牛有s和f两个属性,有正有负,要求选出一些牛,使得这些牛的两种属性的和最大.且这些牛的两种属性分别求和不能为负代码:#include #include #include #include #include using namespace std;const int INF=0x3f3f3f3f;int v[105],w[105],dp[2原创 2016-03-14 14:47:03 · 683 阅读 · 0 评论 -
hdu2639(01背包的第K大)
链接:点击打开链接题意:求01背包的第K大值代码:#include #include #include #include #include using namespace std;int v[105],w[105],dp[1005][35],tmp[2005];int main(){ int N,K,V,i,j,k,t,l,cnt; scanf("%d",&t原创 2016-03-14 14:43:33 · 517 阅读 · 0 评论 -
hdu2546(贪心+背包)
链接:点击打开链接题意:电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。代码:#include #i原创 2016-03-12 22:07:25 · 400 阅读 · 0 评论