题目描述

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

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

此题和原题的不同点:

1.每种草药可以无限制地疯狂采摘。

2.药的种类眼花缭乱,采药时间好长好长啊!师傅等得菊花都谢了!

输入输出格式

输入格式:

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

输出格式:

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

输入输出样例

输入样例#1: 复制

70 3
71 100
69 1
1 2

输出样例#1: 复制

140
#include <iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int dp[130000],c[100005],w[100005];
int main()
{
int n,m;
scanf("%d%d",&m,&n);
for(int i=1;i<=n;++i)
scanf("%d%d",&w[i],&c[i]);
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;++i)
{
for(int j=w[i];j<=m;++j)
{
dp[j]=max(dp[j],dp[j-w[i]]+c[i]);
}
}
printf("%d\n",dp[m]);
return 0;
}

最新文章

  1. Node.js process 模块常用属性和方法
  2. paip.mysql 性能跟iops的以及硬盘缓存的关系
  3. JS兼容所有浏览器的一段加入收藏代码,设置为首页
  4. Sql Server 2008修改Sa密码
  5. G-nav-03
  6. Loadrunner 添加windows资源没反应
  7. Java Script 正则表达式的使用示例
  8. Mybatis上路_05-使用命令行自动生成
  9. oracle11g不能导出空表
  10. &lt;!DOCTYPE html&gt;的问题
  11. 正确地黑C
  12. 怎么去掉word标题前的黑点
  13. 常量指针(const X*)和指针常量(X* const)
  14. Spring AOP的解读
  15. ABP+AdminLTE+Bootstrap Table权限管理系统第七节--登录逻辑及abp封装的Javascript函数库
  16. 简单的连接数据库的java程序模板
  17. C# 如何物理删除有主外键约束的记录?存储过程实现
  18. 关于jquery中on绑定click事件在苹果手机失效的问题
  19. 高级功能:很有用的javascript自定义事件
  20. Angular基础开始

热门文章

  1. HDU 4503
  2. linux网络測试命令
  3. luogu2278 [HNOI2003]操作系统
  4. How to do IF NOT EXISTS in SQLite
  5. Yslow on Nodejs server
  6. python chunk 方式读取大文件——本质上还是file read自身支持
  7. poj3926
  8. 94. Ext.MessageBox消息框
  9. PCB LDI文件 自动化输出(改造)实现思路
  10. Eqs(枚举+ hash)