题目背景
此题为纪念 LiYuxiang 而生。

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

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

此题和原题的不同点:

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

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

输入格式
输入第一行有两个整数,分别代表总共能够用来采药的时间 tt 和代表山洞里的草药的数目 mm。

第 2 到第 (m+1) 行,每行两个整数,第 (i+1) 行的整数 ai, bi 分别表示采摘第 ii 种草药的时间和该草药的价值。

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

输入输出样例
输入 #1复制
70 3
71 100
69 1
1 2
输出 #1复制
140
说明/提示
数据规模与约定
对于 30% 的数据,保证 m≤103
对于 100% 的数据,保证 1 ≤ m ≤ 104,1 ≤ t ≤ 107,1 ≤ m * t ≤ 107,1 ≤ ai, bi ≤ 104.

与采药不同,这道题是一个完全背包的题目,我们来分析一下。

首先,考虑这道题的数据规模,不可以使用二维数组且需要开long long。

我们就开一维数组,顺便定义时间t,种类m,花费时间w[],价值v[],和dp数组。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll t, m;
ll w[10001], v[10001],dp[10000001];

接下来,输入:

cin >> t >> m;
for(ll i=1;i<=m;i++)cin >> w[i] >> v[i];

然后,循环dp数组。

for(ll i=1;i<=m;i++)
{for(ll j=w[i];j<=t;j++){dp[j] = max(dp[j],dp[j-w[i]]+v[i]);}
}

最后,输出dp:

cout << dp[t];

完整代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll t, m;
ll w[10001], v[10001],dp[10000001];
int main()
{cin >> t >> m;for(ll i=1;i<=m;i++)cin >> w[i] >> v[i];for(ll i=1;i<=m;i++){for(ll j=w[i];j<=t;j++){dp[j] = max(dp[j],dp[j-w[i]]+v[i]);}}cout << dp[t];
}

洛谷OJ P1616 疯狂的采药 完全背包 动态规划 dp 背包相关推荐

  1. P1616 疯狂的采药(洛谷,动态规划递推,完全背包)

    先上题目链接:P1616 疯狂的采药 然后放AC代码: #include<bits/stdc++.h> #define ll long long using namespace std; ...

  2. P1616 疯狂的采药(python3实现)--80分

    疯狂的采药 - 洛谷 """ P1616 疯狂的采药(python3实现)--80分 https://www.luogu.com.cn/problem/P1616&quo ...

  3. #洛谷oj:P1525 [NOIP2010 提高组] 关押罪犯

    洛谷oj:P1525 [NOIP2010 提高组] 关押罪犯 #题目描述 #一看很明显是贪心算法 加排序 因为 这个中间最大值的那一对肯定是不会在一起的 从大到小来看 所有点对都尽量不要在一个监狱 # ...

  4. 洛谷oj题单【入门2】分支结构-入门难度(Java)

    洛谷oj题单[入门2]分支结构-入门难度(Java) 来源:https://www.luogu.com.cn/training/101#problems P5709 [深基2.习6]Apples Pr ...

  5. 洛谷OJ 入门与面试 B2001-B2148 题解

    洛谷OJ 入门与面试 B2001-B2148 链接:https://pan.baidu.com/s/1cMRv6SBjL_sehYj7oM8gkw 提取码:tel3 B2001 入门测试题目 #inc ...

  6. *【洛谷 - P1025】数的划分(dfs 或 dp 或 母函数,第二类斯特林数Stirling)

    题干: 题目描述 将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5 1,5,1 5,1,1 问有多少种不同的分法. ...

  7. 洛谷OJ上的A+B花(zhuang)式(bi)解法

    转眼间快到了8月,一想自己都毕业好久了,很怀念曾经在各大OJ上刷题的时光,今天无意在一个算法群里看到最近有个叫洛谷的oj网站貌似蛮火的,于是注册了一个下进去看一看,顺手打开了A+B problem,然 ...

  8. 【洛谷OJ C++】洛谷题单100 入门1顺序结构 题解及学习笔记

    洛谷平台题单100链接:https://www.luogu.com.cn/training/100#problems 目录 学习笔记: P1001 A+B Problem P1000 超级玛丽游戏 P ...

  9. 【洛谷OJ C++】洛谷题单101 入门2分支结构 题解及学习笔记

    洛谷题单101链接:https://www.luogu.com.cn/training/101#problems 笔记及题解目录: 学习笔记: P5710 [深基3.例2]数的性质 P5711 [深基 ...

最新文章

  1. VTK:PolyData之CopyAllArrays
  2. PHP curl 使用代码
  3. 李彦宏卸任百度云计算技术公司执行董事 崔珊珊接任
  4. Thinkphp3.2.3的主从分离事务问题(坑!!!)
  5. C# 获取当前程序集版本号,获取当前编译时间
  6. C语言如何作用于unity,在Unity 3D中使用C进行车轮转向#
  7. CSS基础:移动端开发常识,多倍图初始化等
  8. 什么是SysWow64
  9. 对一些常见的HTML5特效进行整理和运行(有趣特效,烟花特效,爱心特效,炫酷特效)
  10. 队列的顺序实现(入队、出队、对长、获取队头元素)
  11. 使用fiddler自动化抓取微信公众号文章的点赞与阅读数
  12. jkd8 Stream的使用
  13. 模电_第五章_运算放大器应用电路
  14. GB 15981消毒与灭菌效果的评价方法与标准
  15. GPU视频压缩2—Multiple Layer Parallel Motion Estimation on GPU for High Efficiency Video Coding (HEVC)
  16. 工程制图点的投影练习
  17. 英国电信公司O2寻求上市
  18. Xvid 视频压缩编码器设置指南
  19. ASML后悔莫及,中国芯片选用国产和日本光刻机,它并非不可替代
  20. ClickHouse 创建数据库/建表/视图/字典 SQL

热门文章

  1. java.lang.NullPointerException
  2. 模型评估指标 AUC 和 ROC,这是我看到的最透彻的讲解
  3. Excel嵌入网页(一)
  4. Java码农坎坷之路~单例抽象类接口
  5. poi 生成word 表格,并向表格单元格中插入多个图片
  6. 差分隐私:原理,应用与展望
  7. Datax和Kettle使用场景的对比
  8. oracle 查看 编译错误,Oracle-已编译但有错误,命令行提交包不显示结果
  9. CSDN博客:添加空格、空行的多种方法(亲测有用)
  10. 吉林大学[离散数学(68集)AVI] 下载地址 百度云盘