题目描述

小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过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>
using namespace std; int price[30];
int weight[30];
int record[30005];//记录不同金额下历史状态最大的价格与重要度乘积的总和 int max(int a, int b){
    return a > b ? a : b;
}
/*
关键在于找出子问题,记录下不同金额下历史状态最大的价格与重要度乘积的总和
record[j] = max(record[j], record[j - price[i]] + price[i] * weight[i]);
动态规划求解的问题主要由四个特点:
1. 问题是求最优解
2. 整体问题的最优解依赖于各个子问题的最优解
3. 大问题分解成若干小问题,这些小问题之间还有相互重叠的更小的子问题
4. 从上往下分析问题,从下往上求解问题
*/
int dyproblem(int n,int m){
    for (int i = 0; i <= n; i++){
        record[i] = 0;
    }
    for (int i = 1; i <= m; i++){//对于每一件商品判断其是否应该选购
        for (int j = n; j >= price[i]; j--){//在不同的剩余金额下是否应该购买此商品
            record[j] = max(record[j], record[j - price[i]] + price[i] * weight[i]);
        }
    }
    return record[n];
}
int main(){
    int N;
    cin >> N;
    while (N--){
        int n, m;//n--> total money,m-->the number of goods
        cin >> n >> m;
        for (int i = 1; i <= m; i++){
            cin >> price[i] >> weight[i];
        }
        int total = dyproblem(n, m);
        cout << total << endl;
    }
    return 0;
}
 

1084: 开心的小明(dengdengoj)的更多相关文章

  1. nyoj 49 开心的小明

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

  2. NYoj_49开心的小明

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

  3. ny49 开心的小明

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

  4. nyoj 题目49 开心的小明

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

  5. nyoj_49_开心的小明_201403161133

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

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

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

  7. NYOJ 49 开心的小明(01背包问题)

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

  8. nyoj开心的小明

    这个问题是01背包,而对于编程之美那道是完全背包问题,在编程之美中也有一个0,1背包问题. 而且是容量是小于等于,不是等于,对于是否等于,在初始化参数时候不一样,不小于全部初始化为0,恰好等于,初始化 ...

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

随机推荐

  1. 阿里云服务器配置SSL证书成功开启Https(记录趟过的各种坑)

    环境: 阿里云云服务器    Windows Server 2008 标准版 SP2 中文版(趁1212优惠买的一年的水货配置) 阿里云购买的域名(已备案.已解析) 服务器:phpstudy:php5 ...

  2. css 清除浮动的几种方式

    1.给浮动的元素的父级添加 overflow:hidden;属性 ul>不浮动 添加overflow:hidden; li>浮动 2.给浮动的元素的父级添加after伪类 ul:after ...

  3. 滴水穿石-10GUI

    GUI 图形用户界面 1 Frame 窗体 package d10; //第一导入包 import java.awt.Frame; import java.awt.event.WindowAdapte ...

  4. Echo()、print()、print_r()区别

    echo可以一次输出多个值,多个值之间用逗号分隔.echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用.echo是php的内部指令,不是函数, ...

  5. P1036 选数 题解

    题目链接https://www.luogu.org/problemnew/show/P1036 题目描述 已知 nnn 个整数 x1,x2,-,xnx_1,x_2,-,x_nx1​,x2​,-,xn​ ...

  6. SQLServer 常见高CPU利用率原因

    1.缺失索引: USE AdventureWorks2014 SET STATISTICS TIME ON; SET STATISTICS IO ON ; SELECT per.FirstName,p ...

  7. 如何配置使用HTML在线编辑工具

    如何配置使用HTML在线编辑工具 为了更好的.统一的编写统一简单易用的博客,决定采用TinyMCE工具.首先下载TinyMCE4.0包.文件目录如下: 其中, Plugins是插件目录,包括各种插件 ...

  8. python linux 源码安装Twisted

    下载:1.首先找到需要的包访问:https://pypi.org/在搜索框中输入你要查找的包名,然后点击搜索2.选择要下载的包的版本,点击download files3.选择file Type为sou ...

  9. Servlet解决中文乱码问题

    request.setCharacterEncoding("UTF-8"); 并且把这句话放在request.getParameter()之前

  10. 008 pandas介绍

    一:介绍 1.官网 http://pandas.pydata.org/ 2.说明 Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了 ...