P1064 金明的预算方案(01背包||有依赖的背包(待解决))

直接01背包硬刚,虽然容易理解,但是完全不适合附件多的情况

 1 /*
 2 1、只选主件
 3 2、选主件和附件1
 4 3、选主件和附件2
 5 4、选主件和附件1.2
 6 */
 7 #include <iostream>
 8 #include<string>
 9 #include<cstdio>
10 #include<cmath>
11 #define ll long long
12 using namespace std;
13 int V[70][3],P[70][3];
14 int f[40000];
15 int cost1(int x)
16 {
17     return V[x][0];
18 }
19 int cost2(int x)
20 {
21     return V[x][0]+V[x][1];
22 }
23 int cost3(int x)
24 {
25     return V[x][0]+V[x][2];
26 }
27 int cost4(int x)
28 {
29     return V[x][0]+V[x][1]+V[x][2];
30 }
31 int main(void)
32 {
33     int n,m;
34     cin>>n>>m;
35     for(int i=1;i<=m;i++)
36     {
37         int v,p,q;
38         cin>>v>>p>>q;
39         if(!q)
40         {
41             V[i][0]=v;
42             P[i][0]=p;
43         }
44         else//附件
45         {
46             if(V[q][1]==0)//附件1
47             {
48                 V[q][1]=v;
49                 P[q][1]=p;
50             }
51             else//附件2
52             {
53                 V[q][2]=v;
54                 P[q][2]=p;
55             }
56         }
57     }
58     for(int i=1;i<=m;i++)//遍历物品
59     {
60         for(int j=n;j>=0;j--)//遍历容量(钱数),3e4*60=1e5,完全能过
61         {
62             if(j>=cost1(i))
63             {
64                 f[j]=max(f[j-cost1(i)]+V[i][0]*P[i][0],f[j]);
65             }
66             if(j>=cost2(i))
67             {
68                 f[j]=max(f[j],f[j-cost2(i)]+V[i][0]*P[i][0]+V[i][1]*P[i][1]);
69             }
70             if(j>=cost3(i))
71             {
72                 f[j]=max(f[j],f[j-cost3(i)]+V[i][0]*P[i][0]+V[i][2]*P[i][2]);
73             }
74             if(j>=cost4(i))
75             {
76                 f[j]=max(f[j],f[j-cost4(i)]+V[i][0]*P[i][0]+V[i][1]*P[i][1]+V[i][2]*P[i][2]);
77             }
78         }
79     }
80     cout<<f[n];
81     return 0;
82 }

原文地址:https://www.cnblogs.com/greenofyu/p/12274806.html

时间: 2024-10-04 03:48:25

P1064 金明的预算方案(01背包||有依赖的背包(待解决))的相关文章

P1064 金明的预算方案

P1064 金明的预算方案 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行".今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子: 主件 附件 电脑 打印机,扫描仪 书柜 图书 书桌 台灯,文具 工作椅 无 如果要买归类为附件的物品,必须先买该附件所属的主件.每个主件可以有

luogu P1064 金明的预算方案

题目描述 题面 luogu P1064 金明的预算方案 题解 定义数组mw,mv分别储存每个主件的重量及价值,fw,fv分别储存每个主件的附件的重量及价值(按输入顺序确定两个附件的顺序): 对于当前状态,有四种选择: 1.只选当前的主件 2.选主件与附件1 3.选主件与附件2 4.选主件与附件1 附件2 那么就是一个很明确的dp方程了 套上01背包模板 输出答案f[N]. Code #include <cstdio> #include <algorithm> #define ll

动态规划背包问题 洛谷P1064 金明的预算方案

P1064 金明的预算方案 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行".今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子: 主件 附件 电脑 打印机,扫描仪 书柜 图书 书桌 台灯,文具 工作椅 无 如果要买归类为附件的物品,必须先买该附件所属的主件.每个主件可以有

【dp】P1064 金明的预算方案

题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NN元钱就行”.今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子: 主件 附件 电脑 打印机,扫描仪 书柜 图书 书桌 台灯,文具 工作椅 无 如果要买归类为附件的物品,必须先买该附件所属的主件.每个主件可以有00个.11个或22个附件.附件不再

洛谷 P1064 金明的预算方案【有依赖的分组背包】

题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行".今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子: 主件 附件 电脑 打印机,扫描仪 书柜 图书 书桌 台灯,文具 工作椅 无 如果要买归类为附件的物品,必须先买该附件所属的主件.每个主件可以有0个.1个或2个附件.附件不

洛谷 P1064 金明的预算方案

题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”.今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:主件 附件电脑 打印机,扫描仪书柜 图书书桌 台灯,文具工作椅 无如果要买归类为附件的物品,必须先买该附件所属的主件.每个主件可以有0个.1个或2个附件.附件不再有从属于自己的附件.

洛谷p1064 金明的预算方案

题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行".今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子: 主件 附件 电脑 打印机,扫描仪 书柜 图书 书桌 台灯,文具 工作椅 无 如果要买归类为附件的物品,必须先买该附件所属的主件.每个主件可以有0个.1个或2个附件.附件不

[NOIP2006] 提高组 洛谷P1064 金明的预算方案

题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”.今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子: 主件 附件 电脑 打印机,扫描仪 书柜 图书 书桌 台灯,文具 工作椅 无 如果要买归类为附件的物品,必须先买该附件所属的主件.每个主件可以有0个.1个或2个附件.附件不再有从属于

洛谷 P1064 金明的预算方案【DP/01背包-方案数】

题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家--餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:"随便点". 题目描述 不过uim由于买了一些辅(e)辅(ro)书,口袋里只剩M元(M<=10000). 餐馆虽低端,但是菜品种类不少,有N种(N<=100),第i种卖ai元(ai<=1000).由于是很低端的餐馆,所以每种菜只有一份. 小A奉行"不把钱吃光不罢休",所以他点单一定刚好吧uim身上所有钱