金明

P1060 开心的金明

杀马特。学长 韩版系。学妹 提交于 2020-04-02 15:24:12
P1060 开心的金明 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N元。于是,他把每件物品规定了一个重要度,分为5等:用整数1~5表示,第5等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过N元(可以等于N元)的前提下,使每件物品的价格与重要度的乘积的总和最大。 设第j件物品的价格为v[j],重要度为w[j],共选中了k件物品,编号依次为j1,j2,……,jk,则所求的总和为: v[j1]*w[j1]+v[j2]*w[j2]+ …+v[jk]*w[jk]。(其中*为乘号) 请你帮助金明设计一个满足要求的购物单。 输入输出格式 输入格式: 输入的第1行,为两个正整数,用一个空格隔开: N m (其中N(<30000)表示总钱数,m(<25)为希望购买物品的个数。) 从第2行到第m+1行,第j行给出了编号为j-1的物品的基本数据,每行有2个非负整数 v p (其中v表示该物品的价格(v<=10000),p表示该物品的重要度(1~5)) 输出格式: 输出只有一个正整数,为不超过总钱数的物品的价格与重要度乘积的总和的最大值(<100000000)

P1060 开心的金明 (最简单的01背包)

陌路散爱 提交于 2020-03-28 03:07:40
题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N元。于是,他把每件物品规定了一个重要度,分为5等:用整数1~5表示,第5等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过N元(可以等于N元)的前提下,使每件物品的价格与重要度的乘积的总和最大。 设第j件物品的价格为v[j],重要度为w[j],共选中了k件物品,编号依次为j1,j2,……,jk,则所求的总和为: v[j1]*w[j1]+v[j2]*w[j2]+ …+v[jk]*w[jk]。(其中*为乘号) 请你帮助金明设计一个满足要求的购物单。 输入输出格式 输入格式: 输入的第1行,为两个正整数,用一个空格隔开: N m (其中N(<30000)表示总钱数,m(<25)为希望购买物品的个数。) 从第2行到第m+1行,第j行给出了编号为j-1的物品的基本数据,每行有2个非负整数 v p (其中v表示该物品的价格(v<=10000),p表示该物品的重要度(1~5)) 输出格式: 输出只有一个正整数,为不超过总钱数的物品的价格与重要度乘积的总和的最大值(<100000000)。 输入输出样例

洛谷 P1060开心的金明

断了今生、忘了曾经 提交于 2020-03-21 16:43:05
题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过 N N元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的 N N元。于是,他把每件物品规定了一个重要度,分为 5 5等:用整数 1-5 1 − 5表示,第 5 5等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过 N N元(可以等于 N N元)的前提下,使每件物品的价格与重要度的乘积的总和最大。 设第 j j件物品的价格为 v_[j] v [ ​ j ],重要度为 w_[j] w [ ​ j ],共选中了 k k件物品,编号依次为 j_1,j_2,…,j_k j 1 ​ , j 2 ​ , … , j k ​ ,则所求的总和为: v_[j_1] \times w_[j_1]+v_[j_2] \times w_[j_2]+ …+v_[j_k] \times w_[j_k] v [ ​ j 1 ​ ] × w [ ​ j 1 ​ ] + v [ ​ j 2 ​ ] × w [ ​ j 2 ​ ] + … + v [ ​ j k ​ ] × w [ ​ j k ​ ]。 请你帮助金明设计一个满足要求的购物单。 输入输出格式 输入格式: 第一行,为 2

洛谷P1060 开心的金明【dp】

£可爱£侵袭症+ 提交于 2020-03-18 21:52:16
金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NN元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的NN元。于是,他把每件物品规定了一个重要度,分为55等:用整数1-51−5表示,第55等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过NN元(可以等于NN元)的前提下,使每件物品的价格与重要度的乘积的总和最大。 设第jj件物品的价格为v_[j]v[​j],重要度为w_[j]w[​j],共选中了kk件物品,编号依次为j_1,j_2,…,j_kj1​,j2​,…,jk​,则所求的总和为: v_[j_1] \times w_[j_1]+v_[j_2] \times w_[j_2]+ …+v_[j_k] \times w_[j_k]v[​j1​]×w[​j1​]+v[​j2​]×w[​j2​]+…+v[​jk​]×w[​jk​]。 请你帮助金明设计一个满足要求的购物单。 输入输出格式 输入格式: 第一行,为22个正整数,用一个空格隔开:N mNm(其中N(<30000)N(<30000)表示总钱数,m(<25)m(<25)为希望购买物品的个数。) 从第22行到第m+1m+1行,第jj行给出了编号为j-1j

java P1060 开心的金明

故事扮演 提交于 2020-02-25 16:04:31
题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N元。于是,他把每件物品规定了一个重要度,分为5等:用整数1−5表示,第5等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过N元(可以等于N元)的前提下,使每件物品的价格与重要度的乘积的总和最大。 设第jj件物品的价格为 v[j],重要度为w[j],共选中了k件物品,编号依次为 j1,j2,…,jk,则所求的总和为:]v[j1]×w[j1]+v[j2]×w[j2]+…+v[jk]×w[jk]。 请你帮助金明设计一个满足要求的购物单。 输入格式 第一行,为2个正整数,用一个空格隔开:nm(其中N(<30000)表示总钱数,m(<25)为希望购买物品的个数。) 从第2行到第m+1行,第jj行给出了编号为j−1的物品的基本数据,每行有22个非负整数vp(其中v表示该物品的价格(v≤10000),p表示该物品的重要度(1−5) 输出格式 1个正整数,为不超过总钱数的物品的价格与重要度乘积的总和的最大值(<100000000)。 输入输出样例 输入 #1 1000 5 800 2 400 5 300 5

洛谷P1060 开心的金明

自作多情 提交于 2020-02-09 19:37:06
题目一看就是标准的01背包,只需要在计算前把价格和重要度先计算了就好 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> using namespace std; int max(int a, int b){ return a > b ? a : b; } int main() { int n, m; cin >> n >> m; int cost[26] = { 0 }; int value[26] = { 0 }; for (int i = 0; i < m; i++){ int t; cin >> cost[i] >> t; value[i] = t*cost[i]; } int temp[30001] = { 0 }; for (int i = 0; i < m; i++){ for (int j = n; j - cost[i] >= 0; j--){ temp[j] = max(temp[j], temp[j - cost[i]] + value[i]); } } cout << temp[n] << endl; return 0; } 来源: https://www.cnblogs.com/Vetsama/p/12288290

洛谷 P1064 金明的预算方案

心不动则不痛 提交于 2020-01-31 17:25:52
题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过 N N元钱就行”。今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子: 主件 附件 电脑 打印机,扫描仪 书柜 图书 书桌 台灯,文具 工作椅 无 如果要买归类为附件的物品,必须先买该附件所属的主件。每个主件可以有 0 0个、 1 1个或 2 2个附件。附件不再有从属于自己的附件。金明想买的东西很多,肯定会超过妈妈限定的 N N元。于是,他把每件物品规定了一个重要度,分为 5 5等:用整数 1-5 1 − 5表示,第 5 5等最重要。他还从因特网上查到了每件物品的价格(都是 10 1 0元的整数倍)。他希望在不超过 N N元(可以等于 N N元)的前提下,使每件物品的价格与重要度的乘积的总和最大。 设第 j j件物品的价格为 v_[j] v [ ​ j ],重要度为 w_[j] w [ ​ j ],共选中了 k k件物品,编号依次为 j_1,j_2,…,j_k j 1 ​ , j 2 ​ , … , j k ​ ,则所求的总和为: v_[j_1] \times w_[j_1]+v_[j_2] \times w_[j_2]+ …+v_

NOIP2006开心的金明

為{幸葍}努か 提交于 2020-01-23 20:37:39
NOIP2006开心的金明 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N元。于是,他把每件物品规定了一个重要度,分为 5 等:用整数 1 ~ 5 表示,第 5 等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过N元(可以等于N元)的前提下,使每件物品的价格与重要度的乘积的总和最大。 设第j件物品的价格为v [ j ] ,重要度为w [ j ] ,共选中了k件物品,编号依次为j1、j2、……、jk,则所求的总和为: v [ j1 ] w [ j1 ] + v [ j2 ] w [ j2 ] + … + v [ jk ] w [ jk ] 。(其中为乘号) 请你帮助金明设计一个满足要求的购物单。 输入格式 第一行为 2 个正整数N和m,其中N( < 30000 )表示总钱数,m( < 25 )为希望购买物品的个数。 从第 2 行到第m + 1 行,其中第j行给出了编号为j - 1 的物品的基本数据,每行有 2 个非负整数v和p,其中v表示该物品的价格(v≤ 10000 ),p表示该物品的重要度( 1 ~ 5 )。 输出格式 包含 1 个正整数

金明的预算方案

回眸只為那壹抹淺笑 提交于 2020-01-04 03:02:24
【题目描述】 金明今天很开心,妈妈昨天对他说:“你的房间需要购买哪些物品,你说了算,只要不超过N元钱就行”。今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子: 主件 附件 电脑 打印机,扫描仪 书柜 图书 书桌 台灯,文具 工作椅 无 如果要买归类为附件的物品,必须先买该附件所属的主件。每个主件可以有0个、1个或2个附件。附件不再有从属于自己的附件。金明想买的东西很多,肯定会超过妈妈限定的N元。于是,他把每件物品规定了一个重要度,分为5等:用整数1~5表示,第5等最重要。他还查到了每件物品的价格(都是10元的整数倍)。他希望在不超过N元(可以等于N元)的前提下,使每件物品的价格与重要度的乘积的总和最大。 设第j件物品的价格为v[j],重要度为w[j],共选中了k件物品,编号依次为j 1 、j 2 、······、j k ,则所求的总和为: v[j 1 ]*w[j 1 ]+v[j 2 ]*w[j 2 ]+······+v[j k ]*w[j k ](其中*为乘号)。 请你帮助金明设计一个满足要求的购物单。 【输入描述】 第1行,为两个正整数N、m(其中N < 32000,表示总钱数,m < 60,为希望购买物品的个数); 第2行到第m+1行,第j行给出了编号为j-1的物品的基本数据,每行有3个非负整数v、p、q

金明的预算方案(组合背包)

廉价感情. 提交于 2020-01-04 03:02:15
组合背包 #include<iostream> using namespace std; int v[9999]; int w[9999]; int k[9999]; int f[99999]; int n,m; int t=0; int s[9999][10]; int main() { scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { int x; scanf("%d%d%d",&v[i],&x,&k[i]); w[i]=x*v[i]; if(k[i]!=0)//如果是附件的话,才放 s[k[i]][++s[k[i]][0]]=i; } for(int i=1;i<=m;i++) if(!k[i]) { for(int j=n;j>=0;j--) { if(j-v[i]>=0) f[j]=max(f[j-v[i]]+w[i],f[j]); if(j-v[i]-v[s[i][1]]>=0) f[j]=max(f[j-v[i]-v[s[i][1]]]+w[i]+w[s[i][1]],f[j]); if(j-v[i]-v[s[i][2]]>=0) f[j]=max(f[j-v[i]-v[s[i][2]]]+w[i]+w[s[i][2]],f[j]); if(j-v[i]-v[s[i][2]]-v[s[i][1]]>=0) f[j]=max(f