RNQOJ 开心的金明
题目描述
金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N 元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N 元。于是,他把每件物品规定了一个重要度,分为5 等:用整数1~5 表示,第5 等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过N 元(可以等于N 元)的前提下,使每件物品的价格与重要度的乘积的总和最大。设第j 件物品的价格为v[j],重要度为w[j],共选中了k 件物品,编号依次为j1...jk,则所求的总和为:v[j1]*w[j1]+..+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)
#include <iostream>
using namespace std;
const int maxm = + ;
const int maxn =;
int v[maxn], p[maxn];
int dp[maxm] = {}; //表示在上限为金钱i的情况下的最大值
int main()
{
int n, m;
int i, j;
cin>>n>>m;
for (i = ; i < m; i++)
cin>>v[i]>>p[i];
for (i = ; i < m; i++)
for (j = n; j >= v[i]; j--) //由于j>=v[i] 所以j-v[i]一定大于0
if (dp[j - v[i]] + v[i] * p[i] > dp[j])
dp[j] = dp[j - v[i]] + v[i] * p[i];
cout<<dp[n];
return ;
}

当输入
10 5
3 3
4 2
5 1
3 2
6 1
后,从左往右,从下往上打印出的表,j的值表示剩余的钱的值,i=0考虑放入第一个物体 i=1考虑放入第二个物体
i=0那列,表示各个钱数下,第一个物品放入能到达的价值
随后,i=1那列,利用了i=0那列的条件,表示在考虑第二个物品的前提下(首先考虑会不会超出题设(代码用j>=v[i])表示不会超出题设,再考虑放入后的价格与不放入的价格哪个大(利用了i=0列的条件),保留大数),然后获得各个钱数下的最大值。
RNQOJ 开心的金明的更多相关文章
- codevs 1115 开心的金明--01背包
1115 开心的金明 2006年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 金明今天很开心,家里购 ...
- 洛谷 P1060 开心的金明
开心的金明 Problem Description: 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些 ...
- Luogu 1060 开心的金明 / NOIP 2006 (动态规划)
Luogu 1060 开心的金明 / NOIP 2006 (动态规划) Description 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨 ...
- 【洛谷p1060】开心的金明
(DP背包第一题,值得记录思路呀) 开心的金明[传送门] 洛谷算法标签: 01背包问题的思路分析见[总结]01背包问题 这道题显然是典型的01背包问题,首先我们显然可以由输入的第i个物体的价格v[i] ...
- P1060 开心的金明
P1060 开心的金明 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要 ...
- P1060 开心的金明(洛谷,动态规划递推,01背包轻微变形题)
题目链接:P1060 开心的金明 基本思路: 基本上和01背包原题一样,不同点在于这里要的是最大重要度*价格总和,我们之前原题是 f[j]=max(f[j],f[j-v[i]]+p[i]); 那么这里 ...
- sicily 1342 开心的金明 (动规)
刷一下简单的背包问题 以下为代码: //1342. 开心的金明 #include <iostream> using namespace std; #define MAX(a,b) a> ...
- RQNOJ PID2 / 开心的金明
题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N 元钱就行”.今 ...
- 开心的金明 NOIP 2006 普及组
题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就 ...
随机推荐
- 浅析Dagger2依赖注入实现过程
Dragger2是Android应用开发中一个非常优秀的依赖注入框架.本文主要通过结合Google给出的MVP开发案例todo-mvp-dagger(GitHub连接地址:https://github ...
- IOS 自定义Layer(图层)
方式1: @interface NJViewController () @end @implementation NJViewController - (void)viewDidLoad { [sup ...
- slice 与 substring
Array数组:slice() slice() : 截取 Array 的部分元素,然后返回一个新的Array. var arr = ['a', ' b', 'c', 'd', 'e', 'f', 'g ...
- Mybatis-延迟加载和缓存
延迟加载 概念: 就是在需要用到数据时才进行加载,不需要用到数据时就不加载数据.延迟加载也称懒加载. 好处:先从单表查询,需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比关联查询多张表 ...
- kubernetes-控制器Deployment和DaemonSet(八)
Pod与controllers的关系 •controllers:在集群上管理和运行容器的对象•通过label-selector相关联•Pod通过控制器实现应用的运维,如伸缩,升级等 控制器又称工作负载 ...
- 分词,复旦nlp,NLPIR汉语分词系统
http://www.nlpir.org/ http://blog.csdn.net/zhyh1986/article/details/9167593
- Bootstrap历练实例:响应式布局
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- css布局:块级元素的居中
一.定宽: 1.定位居中(absolute) 方法一: html: <div class="main"></main> css: .main{ width: ...
- k8s的pv和pvc简述
pvc:资源需要指定:1.accessMode:访问模型:对象列表: ReadWriteOnce – the volume can be mounted as read-write by a s ...
- myeclipse10.5 crack(2012-12-27-bd 写的日志迁移
首先去网上下一个破解文件如图: 解压过后打开的文件夹如图: 再打开crack文件夹如图: 运行run.bat如果点击它没反应就是你没有安装jdk,它如果运行就如图所示: 到这一步就在第一个方框user ...