开心的小明

时间限制:1000 ms  |  内存限制:65535 KB
难度:4
描述
小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过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
背包问题也是动态规划问题!
解题思路:
首先为了简化问题,我们把1000,800 ··· 200简化为10,8 ··· 2 !
第一步:初始化10个背包
dp[0]=0:表示可能会出现的价格为0的状态,初始值为0
dp[1]=0:表示可能会出现的价格为1的状态,初始值为0
dp[2]=0:表示可能会出现的价格为2的状态,初始值为0
dp[3]=0:表示可能会出现的价格为3的状态,初始值为0
dp[4]=0:表示可能会出现的价格为4的状态,初始值为0
dp[5]=0:表示可能会出现的价格为5的状态,初始值为0
dp[6]=0:表示可能会出现的价格为6的状态,初始值为0
dp[7]=0:表示可能会出现的价格为7的状态,初始值为0
dp[8]=0:表示可能会出现的价格为8的状态,初始值为0
dp[9]=0:表示可能会出现的价格为9的状态,初始值为0
dp[10]=0:表示可能会出现的价格为10的状态,初始值为0
第二步:分析给出的每组数据
第一组:8 2;假如说把价格为8重要程度为2的物品装进背包,那么此时背包会出现哪几种状态呢?很明显,可能会出现背包从dp[0]转移到dp[8],dp[1]转移到dp[9],dp[2]转移到dp[10]这三个状态;那么dp[8],dp[9],dp[10]这三个状态是保留还是舍去呢?此时肯定要比较在这个状态转移之前和状态转移之后,我们更想要哪个状态?所以需要写成dp[10]=Max(dp[10],dp[10-8]+2*8);dp[10]表示状态转移之前的状态,dp[10-8]+2*8表示状态转移之后的状态!同样,有dp[9]=Max(dp[9],dp[9-8]+2*8);dp[8]=Max(dp[8],dp[8-8]+2*8);
第二组:4 5;有上述可列出:dp[10]=Max(dp[10],dp[10-4]+4*5); dp[9]=Max(dp[9],dp[9-4]+4*5); ··· ;dp[4]=Max(dp[4],dp[4-4]+4*5);
依次类推······
最后dp[10]的值即为要求得的结果!
AC码:
#include<stdio.h>
#include<string.h>
struct node
{int v;int p;
}num[25];
int max(int x,int y)
{return x>y?x:y;
}
int main()
{int N;int dp[30003];scanf("%d",&N);while(N--){int n,m,i,j;scanf("%d%d",&n,&m);memset(dp,0,sizeof(dp));for(i=0;i<m;i++){scanf("%d%d",&num[i].v,&num[i].p);}for(i=0;i<m;i++){for(j=n;j>=num[i].v;j--)dp[j]=max(dp[j-num[i].v]+num[i].v*num[i].p,dp[j]);}printf("%d\n",dp[n]);}return 0;
}

NYOJ 49 开心的小明相关推荐

  1. NYOJ 49 开心的小明

    点击打开链接 很多题都可以通过转化,转化为我们比较熟悉的模型,比如说这个题,我们就可以转化为0-1背包处理.把n当作背包容积,m当作物品个数,v当作每种物品的体积,p*v当作每种物品的价值,这样,求物 ...

  2. NYOJ-49 开心的小明

    开心的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他 ...

  3. 【动态规划】开心的小明

    [动态规划]开心的小明 贵有恒,何必三更起五更眠:最无益,莫过一日曝十日寒. [动态规划]开心的小明 时间限制: 1 Sec  内存限制: 128 MB 提交: 20  解决: 10 [提交][状态] ...

  4. 开心的小明 (NYOJ49) [动态规划.01背包]

    开心的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他 ...

  5. 开心的小明-动态规划算法

    开心的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他 ...

  6. 开心的小明(ACM)

    开心的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他 ...

  7. C++编程题,开心的小明

    小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行&quo ...

  8. NYOJ 52 无聊的小明

    无聊的小明 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 这天小明十分无聊,没有事做,但不甘于无聊的小明聪明的想到一个解决无聊的办法,因为他突然对数的正整数次幂产生了兴 ...

  9. NYOJ 擅长排列的小明 II---Problem B

    擅长排列的小明 II 时间限制:1000 ms  |  内存限制:65535 KB 描述 小明十分聪明,而且十分擅长排列计算. 有一天小明心血来潮想考考你,他给了你一个正整数n,序列1,2,3,4,5 ...

最新文章

  1. 当前路径_[JSP] 07 JSP 路径问题
  2. 华为创造出5g和鸿蒙,拥有5G专利,开发鸿蒙系统:《华为智慧》复盘成长路总结成功之道...
  3. 全国大学生智能汽车竞赛浙江赛区选拔赛疫情防控工作预案
  4. delphi之http通讯
  5. WEB初学者简介,web入门
  6. 《转》python学习--基础上
  7. 经典论文复现 | 基于深度卷积网络的图像超分辨率算法
  8. css设置不允许复制文本内容
  9. Codeforces Round #587 (Div. 3) C. White Sheet 思维
  10. 一张图带你了解JRE、JDK、JVM
  11. 【Shell】数某关键字在文件中出现次数
  12. 严重BS骗样本的骗子
  13. windows截图快捷方式
  14. 计算机毕业设计基于Python实现的药店|药房管理系统
  15. A00工具类学习之参考文献写法
  16. 两个路由器无线连接教程
  17. OpenJudgeNOI4978 宠物小精灵之收服
  18. 过滤器(Filter)的实现方式
  19. php tp6 错误接管分析,终于成功使用whoops接管tp6的异常处理!
  20. 讲一点有技术含量的东西(一)

热门文章

  1. 第五章 运输层(UDP和TCP三次握手,四次挥手分析)
  2. 虚拟机配置自定义静态ip,并能访问外网
  3. rsync的原理——转载
  4. NYOJ-99 单词拼接(欧拉+回溯)
  5. 通过php extension使disable_function支持通配符
  6. 以cisco 3550为例介绍IOS的恢复方法:
  7. why is pc important for university students?
  8. what should you do if you can be silent and do things
  9. In English or Chinese?
  10. life at University of Liverpool