day7 - 千锤百炼
动态规划(DP)
洛谷P1115(必做)
最大子段和
题目描述
给出一个长度为 $n$ 的序列 $a$,选出其中连续且非空的一段使得这段和最大。
输入格式
第一行是一个整数,表示序列的长度 $n$。
第二行有 $n$ 个整数,第 $i$ 个整数表示序列的第 $i$ 个数字 $a_i$。
输出格式
输出一行一个整数表示答案。
样例 #1
样例输入 #1
1 | 7 |
样例输出 #1
1 | 4 |
提示
样例 1 解释
选取 $[3, 5]$ 子段 ${3, -1, 2}$,其和为 $4$。
数据规模与约定
- 对于 $40%$ 的数据,保证 $n \leq 2 \times 10^3$。
- 对于 $100%$ 的数据,保证 $1 \leq n \leq 2 \times 10^5$,$-10^4 \leq a_i \leq 10^4$。
一般做法(穷举)
动态规划
洛谷2196(选做)
简单背包问题
01背包
[NOIP2005 普及组] 采药
题目描述
辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”
如果你是辰辰,你能完成这个任务吗?
输入格式
第一行有 $2$ 个整数 $T$($1 \le T \le 1000$)和 $M$($1 \le M \le 100$),用一个空格隔开,$T$ 代表总共能够用来采药的时间,$M$ 代表山洞里的草药的数目。
接下来的 $M$ 行每行包括两个在 $1$ 到 $100$ 之间(包括 $1$ 和 $100$)的整数,分别表示采摘某株草药的时间和这株草药的价值。
输出格式
输出在规定的时间内可以采到的草药的最大总价值。
样例 #1
样例输入 #1
1 | 70 3 |
样例输出 #1
1 | 3 |
提示
【数据范围】
- 对于 $30%$ 的数据,$M \le 10$;
- 对于全部的数据,$M \le 100$。
【题目来源】
NOIP 2005 普及组第三题
1 |
|
变式题:
P1060 [NOIP2006 普及组] 开心的金明
P1049 [NOIP2001 普及组] 装箱问题
进阶题:P1507 NASA的食物计划
NASA的食物计划
题目背景
NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安全技术问题一直大伤脑筋,因此在各方压力下终止了航天飞机的历史,但是此类事情会不会在以后发生,谁也无法保证。所以,在遇到这类航天问题时,也许只能让航天员出仓维修。但是过多的维修会消耗航天员大量的能量,因此 NASA 便想设计一种食品方案,使体积和承重有限的条件下多装载一些高卡路里的食物。
题目描述
航天飞机的体积有限,当然如果载过重的物品,燃料会浪费很多钱,每件食品都有各自的体积、质量以及所含卡路里。在告诉你体积和质量的最大值的情况下,请输出能达到的食品方案所含卡路里的最大值,当然每个食品只能使用一次。
输入格式
第一行 $2$ 个整数,分别代表体积最大值 $h$ 和质量最大值 $t$。
第二行 $1$ 个整数代表食品总数 $n$。
接下来 $n$ 行每行 $3$ 个数 体积 $h_i$,质量 $t_i$,所含卡路里 $k_i$。
输出格式
一个数,表示所能达到的最大卡路里(int
范围内)
样例 #1
样例输入 #1
1 | 320 350 |
样例输出 #1
1 | 550 |
提示
对于 $100%$ 的数据,$h,t,h_i,t_i \le 400$,$n \le 50$,$k_i \le 500$。
1 |
|