NOIP2005普及组第3题 采药   

时间限制: 1 Sec  内存限制: 128 MB
提交: 50  解决: 23
[提交][状态][讨论版][命题人:外部导入]

题目描述

辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”

如果你是辰辰,你能完成这个任务吗?

输入

第一行有两个整数T(1 <= T <= 1000)和M(1 <= M <= 100),用一个空格隔开,T代表总共能够用来采药的时间,M代表山洞里的草药的数目。接下来的M行每行包括两个在1到100之间(包括1和100)的整数,分别表示采摘某株草药的时间和这株草药的价值。

输出

包括一行,这一行只包含一个整数,表示在规定的时间内,可以采到的草药的最大总价值。

【数据规模】

对于30%的数据,M <= 10;

对于全部的数据,M <= 100。

样例输入

70 3
71 100
69 1
1 2

样例输出

3

题目的要求是用有限的时间获取价值尽可能高的草药,所以可以用01背包来做。

可以假设采药时的最优解是在时间T内i棵,用c(i,T)表示,此时这个解要么包含i这棵草药,要么不包含,假设采这颗草药的时间为T1,价值为V,如果包含,这个最优解变成了c(i-1,T-T1)+V,如果不包含,这个最优解变成了c(i-1,T),这时只要判断c(i-1,T-T1)+V和c(i-1,T)哪个价值更大,哪个就是最优解,即c(i,T)=max(c(i-1,T-T1)+V,c(i-1,T))。

现在令第j个草药的价值为v[j],采这个草药的时间为ti[j],i时的价值为h[i],则有h[i]=max(h[i-1],h[i-ti[j]]+v[j])。而h[0]为0,我们就得到了最优解的递推公式。代码如下:

#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;
int dp[];
int v[],w[];
int main()
{
int t,n;
int i;
cin>>t>>n;
for(i=;i<=n;i++)
cin>>w[i]>>v[i];
memset(dp,,sizeof());
for(i=;i<=n;i++)
{
for(int j=t;j>=w[i];j--)
{
dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
}
}
cout<<dp[t];
return ;
}
 

NOIP2005普及组第3题 采药 (背包问题)的更多相关文章

  1. NOIP2005普及组第4题 循环

    NOIP2005普及组第4题 循环 时间限制: 1 Sec  内存限制: 128 MB提交: 27  解决: 6[提交][状态][讨论版][命题人:外部导入] 题目描述 乐乐是一个聪明而又勤奋好学的孩 ...

  2. 【动态规划】Vijos P1104 采药(NOIP2005普及组第三题)

    题目链接: https://vijos.org/p/1104 题目大意: T时间,n个物品,每个耗时ti,可获得收益ci,求最大收益. 题目思路: [动态规划] 01背包裸题.一维二维都过了,放个一维 ...

  3. [NOIP2005] 普及组 循环

    陶陶摘苹果 校门外的树 采药 以上三道都不是重点 循环 题目描述 乐乐是一个聪明而又勤奋好学的孩子.他总喜欢探求事物的规律.一天,他突然对数的正整数次幂产生了兴趣. 众所周知,2的正整数次幂最后一位数 ...

  4. 动态规划 洛谷P1048 [NOIP2005 普及组] 采药

    洛谷P1048 [NOIP2005 普及组] 采药 洛谷的一个谱架-的题目,考的是01背包问题,接下来分享一下我的题解代码. AC通过图: 我的代码: 1 //动态规划 洛谷P1048 [NOIP20 ...

  5. NOIP2015普及组第四题推销员

    好久没有写博客了,今天再写一篇.还是先看题: 试题描述 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有 N 家 ...

  6. NOIP2008普及组第3题 传球游戏

    NOIP2008普及组第3题 传球游戏 时间限制: 1 Sec  内存限制: 128 MB提交: 29  解决: 16[提交][状态][讨论版][命题人:外部导入] 题目描述 上体育课的时候,小蛮的老 ...

  7. NOIP2004普及组第3题 FBI树

    /* 1106: NOIP2004普及组第3题 FBI树 时间限制: 1 Sec 内存限制: 128 MB 提交: 10 解决: 9 [提交] [状态] [讨论版] [命题人:外部导入] 题目描述 我 ...

  8. [NOIP2005普及组]采药(01背包)

    题目描述 描述 辰辰是个很有潜能.天资聪颖的孩子,他的梦想是称为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到个到处都是草药的山洞里对他说 ...

  9. 【递归】Vijos P1132 求二叉树的先序序列(NOIP2001普及组第三题)

    题目链接: https://vijos.org/p/1132 题目大意: 给定二叉树的中序和后序遍历,求该二叉树先序遍历. 题目思路: [递归] 这题妥妥递归. 二叉树先序根左右,中序左根右,后序左右 ...

随机推荐

  1. RxJava+RxAndroid+MVP入坑实践(基础篇)

    转载请注明出处:http://www.blog.csdn.net/zhyxuexijava/article/details/51597230.com 前段时间看了MVP架构和RxJava,最近也在重构 ...

  2. ImageView显示图像控件

    ImageView显示图像控件 一.简介 1. 2. ImageView,图像视图,直接继承自View类,它的主要功能是用于显示图片,实际上它不仅仅可以用来显示图片,任何Drawable对象都可以使用 ...

  3. UnsupportedOperationException

    java不支持该功能,多见于, Arrays.asList() ,然后使用remove和add方法.     因为asarraylist的集合是一个转化来的集合,它的大小是固定的.不能进行长度修改. ...

  4. RabbitMQ C# driver stops receiving messages

    http://stackoverflow.com/questions/12499174/rabbitmq-c-sharp-driver-stops-receiving-messages

  5. 解决:夜神模拟器连不上adb的问题

    一. adb devices发现不了设备 刚试了一下,在夜神模拟器开启的情况下,adb devices 死活找不到设备 adb kill-server和adb start-server也无济于事 二. ...

  6. 【Python】unicode' object is not callable

    在Python中,出现'unicode' object is not callable的错误一般是把字符串当做函数使用了.

  7. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource

    二月 20, 2017 3:09:47 下午 org.apache.catalina.startup.SetAllPropertiesRule begin警告: [SetAllPropertiesRu ...

  8. 2017.2.9日总结--外网IP和内网IP

    Linux自己不能通过自己的外网访问自己必须通过内网访问自己

  9. Django和pymysql搭建学员管理系统

    学员管理系统 项目规划阶段 项目背景 近年来老男孩教育的入学学员数量稳步快速增长,传统的excel统计管理学员信息的方式已经无法满足日渐增长的业务需求.因此公司急需一套方便易用的“学员管理系统”,来提 ...

  10. nodejs express project

    user root install express npm install express -g install express... npm install express-generator -g ...