时间限制: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

#include <iostream>
#include <cstring>
#include <cmath> using namespace std; int ans[30000],v[25],p[25]; int main()
{
int t,n,m,i,j,k;
cin>>t;
while(t--)
{
cin>>n>>m;
for(i=0;i<m;++i)
cin>>v[i]>>p[i]; memset(ans,0,sizeof(ans)); for(i=0;i<m;++i)
for(j=n;j>=v[i];--j)
if((ans[j-v[i]]>0) || (0==j-v[i]))
ans[j]=max(ans[j],ans[j-v[i]]+v[i]*p[i]); k=0;
for(i=0;i<=n;i++)
k=max(k,ans[i]);
cout<<k<<endl;
}
return 0;
}

NYOJ 49 开心的小明(01背包问题)的更多相关文章

  1. nyoj 49 开心的小明

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

  2. nyoj 题目49 开心的小明

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

  3. 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代码 # ...

  4. NYOJ 49-开心的小明:01背包

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

  5. 开心的小明(南阳oj49)(01背包)

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

  6. nyoj_49_开心的小明_201403161133

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

  7. NYoj_49开心的小明

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

  8. ny49 开心的小明

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

  9. nyoj 49-开心的小明(动态规划, 0-1背包问题)

    49-开心的小明 内存限制:64MB 时间限制:1000ms Special Judge: No accepted:7 submit:11 题目描述: 小明今天很开心,家里购置的新房就要领钥匙了,新房 ...

随机推荐

  1. Codeforces Round #357 (Div. 2) C

    C. Heap Operations time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  2. oracle查询时遇到的坑

    select * from manu_routecard t left join manu_routecardlist mr on t.routecard_id = mr.routecard_id l ...

  3. python使用openpyxl操作excel

    def initExcel(): file_path = "test.xlsx" file = load_workbook(file_path) table = file[&quo ...

  4. HDU 4667 Building Fence(求凸包的周长)

    A - Building Fence Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%I64d & %I64u ...

  5. 培训补坑(day4:网络流建模与二分图匹配)

    补坑时间到QAQ 好吧今天讲的是网络流建模与二分图匹配... day3的网络流建模好像说的差不多了.(囧) 那就接着补点吧.. 既然昨天讲了建图思想,那今天就讲讲网络流最重要的技巧:拆点. 拆点,顾名 ...

  6. 基于CSOCKET的Client简单实例(转)

    原文转自 http://blog.csdn.net/badagougou/article/details/78410382 第一步:创建一个基类为CSOCKET类的新类,Cclient,并在主对话框类 ...

  7. matlab sqlite

    转自: http://www.douban.com/note/359606646/和http://blog.csdn.net/yinxing408033943/article/details/7677 ...

  8. 华为上机测试题(地铁换乘-java)

    PS:自己写的,自测试OK,供大家参考. /* 高级题样题:地铁换乘描述:已知2条地铁线路,其中A为环线,B为东西向线路,线路都是双向的.经过的站点名分别如下,两条线交叉的换乘点用T1.T2表示.编写 ...

  9. java基础练习 15

    import java.util.Scanner; public class Fiftheen { /*有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下 ...

  10. ECShop安装实录

    版本: ecmoban_V2.7.3_UTF8_20150623 来源: 官网 一. 给 C:\Windows\temp目录增加 IIS_Users 完全权限. 二. 安装报错: Warning: d ...