NYoj_49开心的小明
开心的小明
- 描述
- 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N 元钱就行”。今天一早小明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的N 元。于是,他把每件物品规定了一个重要度,分为5 等:用整数1~5 表示,第5 等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过N 元(可以等于N 元)的前提下,使每件物品的价格与重要度的乘积的总和最大。设第j
件物品的价格为v[j],重要度为w[j],共选中了k 件物品,编号依次为j1...jk,则所求的总和为:v[j1]*w[j1]+..+v[jk]*w[jk]请你帮助金明设计一个满足要求的购物单.- 输入
- 第一行输入一个整数N(0<N<=101)表示测试数据组数
每组测试数据输入的第1 行,为两个正整数,用一个空格隔开:
N m
(其中N(<30000)表示总钱数,m(<25)为希望购买物品的个数。)
从第2 行到第m+1 行,第j 行给出了编号为j-1
的物品的基本数据,每行有2 个非负整数
v p
(其中v 表示该物品的价格(v≤10000),p 表示该物品的重要度(1~5)) - 输出
- 每组测试数据输出只有一个正整数,为不超过总钱数的物品的价格与重要度乘积的总和的
最大值(<100000000) - 样例输入
-
1
1000 5
800 2
400 5
300 5
400 3
200 2 - 样例输出
-
3900
-
算法分析:0-1背包的应用,dp[i][j]表示从前i件物品选出总重不超过j的物品时其所要求乘积总和最大。
-
#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
#include <cstdlib>
using namespace std; #define mem(a) memset(a, 0, sizeof(a)) struct node {
int v, z;
}a[30]; int dp[30][30010]; int main() {
int t;
scanf("%d",&t);
while (t --) {
int m, n;
scanf("%d%d",&m, &n);
mem(a);
mem(dp);
for (int i = 0; i<n; i++) scanf("%d%d",&a[i].v, &a[i].z);
for (int i = 0; i<n; i++) {
for (int j = 0; j<=m; j++) {
if (a[i].v > j) dp[i+1][j] = dp[i][j];
else dp[i+1][j] = max(dp[i][j], dp[i][j-a[i].v] + a[i].v*a[i].z);
}
}
printf("%d\n",dp[n][m]);
}
return 0;
}
NYoj_49开心的小明的更多相关文章
- nyoj 49 开心的小明
开心的小明 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天 ...
- ny49 开心的小明
开心的小明 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他 ...
- nyoj 题目49 开心的小明
开心的小明 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天 ...
- nyoj_49_开心的小明_201403161133
开心的小明 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天 ...
- 开心的小明(南阳oj49)(01背包)
开心的小明 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 小明今天非常开心.家里购置的新房就要领钥匙了,新房里有一间他自己专用的非常宽敞的房间.更让他高兴的是,妈妈 ...
- 1084: 开心的小明(dengdengoj)
题目描述 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N 元钱就行”.今 ...
- NYOJ 49 开心的小明(01背包问题)
时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 小明今天非常开心.家里购置的新房就要领钥匙了,新房里有一间他自己专用的非常宽敞的房间.更让他高兴的是.妈妈昨天对他说: ...
- nyoj开心的小明
这个问题是01背包,而对于编程之美那道是完全背包问题,在编程之美中也有一个0,1背包问题. 而且是容量是小于等于,不是等于,对于是否等于,在初始化参数时候不一样,不小于全部初始化为0,恰好等于,初始化 ...
- nyoj49 开心的小明 01背包
思路:dp(i, j)表示用金钱j去买前i个物品能得到的最大价值.转移方程dp(i, j) = max{dp(i-1, j), dp(i-1, j-p[i]) + p[i]*w[i]}. AC代码 # ...
随机推荐
- 百度云BCC配置Apache VirtualHost 实现相同域名不同端口访问不同应用
问题描述:前戏:本人在百度云上购买了BCC虚拟服务,并购买域名,部署应用,可以正常访问(这里一切都很正常^_^). 事情正在起变化:随着开发的不断推进,工程在本地测试成功后,部署到服务器,会发现有些页 ...
- 一个两年java程序猿的2017个人总结
前言 又到了一年中最后的日子了,相信有不少公司要求员工写年度总结了,我也不例外.不过个人感觉在公司的写个年度总结来说,过于模板化了.其实很多没有必要.总之,本篇的个人总结,是按照个人的想法写的.简而言 ...
- su 和 sudo 命令的区别-转载
link 一. 使用 su 命令临时切换用户身份 1.su 的适用条件和威力 su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要 ...
- java 修饰符之修饰范围
不同修饰符有不同修饰范围,为了对修饰符有更明确的认识,使用表格总结. 抽象\关键字 public protected private static final abstract default 类 √ ...
- 【转】java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
最近在配置最新的ssh(struts2.3.16.3+hibernate4.3.7+spring4.1.2)的时候遇到的这个错误提示,后来在网上找了半天都不能解决,虽然有个说法是model对象用这样@ ...
- SQL基础学习_06_集合运算和联结
集合运算 1. 并集:UNION 例: SELECT shohin_id, shohin_mei FROM Shohin UNION SELECT shohin_id ...
- ITS简要分析流程(using Qiime)
Qiime安装 参考资料:http://blog.sina.com.cn/s/blog_83f77c940101h2rp.html Qiime script官方说明http://qiime.org/s ...
- vue cli搭建项目及文件引入
cli搭建方法:需安装nodejs先 1.npm install -g cnpm --registry=https://registry.npm.taobao.org //安装cnpm,用cnpm下载 ...
- Linux入门篇(二)——文件
这一系列的Linux入门都是本人在<鸟哥的Linux私房菜>的基础上总结的基本内容,主要是记录下自己的学习过程,也方便大家简要的了解 Linux Distribution是Ubuntu而不 ...
- spring中使用Hibernate中的getCurrentSession报出:createQuery is not valid without active transaction
1.错误信息 HTTP Status 500 - createQuery is not valid without active transaction type Exception report m ...