3.13&&3.20(移至3.16)

今天是dp的好日子啊

dp 介绍

dp要素:状态、转移、边界条件、转移顺序
可以使用 dp 的题目所具备的重要性质:无后效性(之前如何到达该状态与之后没有关系)

dp 引入

既然是dp,那包从背包开始了

01,多重,完全,还有……扩展?

采药三部曲

P1048 [NOIP 2005 普及组] 采药

有限的采药P1833 樱花

P1616 疯狂的采药


luogu P5365 [SNOI2017] 英雄联盟

题目描述

正在上大学的小皮球热爱英雄联盟这款游戏,而且打的很菜,被网友们戏称为「小学生」。

现在,小皮球终于受不了网友们的嘲讽,决定变强了,他变强的方法就是:买皮肤!

小皮球只会玩 \(\text{N}\) 个英雄,因此,他也只准备给这 \(\text{N}\) 个英雄买皮肤,并且决定,以后只玩有皮肤的英雄。

\(\text{N}\) 个英雄中,第 \(\text{i}\) 个英雄有 \(K_i\) 款皮肤,价格是每款 \(C_i\) Q 币(同一个英雄的皮肤价格相同)。

为了让自己看起来高大上一些,小皮球决定给同学们展示一下自己的皮肤,展示的思路是这样的:对于有皮肤的每一个英雄,随便选一个皮肤给同学看。

比如,小皮球共有 5 个英雄,这 5 个英雄分别有 \(\text{0,0,3,2,4}\) 款皮肤,那么,小皮球就有 \(3 \times 2 \times 4 = 24\) 种展示的策略。

现在,小皮球希望自己的展示策略能够至少达到 \(\text{M}\) 种,请问,小皮球至少要花多少钱呢?

输入格式

第一行,两个整数 \(\text{N,M}\)

第二行,\(\text{N}\) 个整数,表示每个英雄的皮肤数量 \(K_i\)

第三行,\(\text{N}\) 个整数,表示每个英雄皮肤的价格 \(C_i\)

输出格式

一个整数,表示小皮球达到目标最少的花费。

输入输出样例 #1

输入 #1

3 24
4 4 4
2 2 2

输出 #1

18

说明/提示

样例解释

每一个英雄都只有4款皮肤,每款皮肤2 Q币,那么每个英雄买3款皮肤,\(3 \times 3 \times 3 \ge 24\),共花费 \(6 \times 3\) Q币。

数据范围

共 10 组数据,第 \(\text{i}\) 组数据满足:\(\text{N} \le \max(5, \log_2^4i)\)

\(\text{100}\%\) 的数据:\(\text{M} \le 10^{17}, 1 \le K_i \le 10, 1 \le C_i \le 199\)。保证有解。

设计非常银杏,不过除了是乘法之外没有任何区别,过



P1077 [NOIP 2012 普及组] 摆花

题目描述

小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共 \(m\) 盆。通过调查顾客的喜好,小明列出了顾客最喜欢的 \(n\) 种花,从 \(1\)\(n\) 标号。为了在门口展出更多种花,规定第 \(i\) 种花不能超过 \(a_i\) 盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列。

试编程计算,一共有多少种不同的摆花方案。

输入格式

第一行包含两个正整数 \(n\)\(m\),中间用一个空格隔开。

第二行有 \(n\) 个整数,每两个整数之间用一个空格隔开,依次表示 \(a_1,a_2, \cdots ,a_n\)

输出格式

一个整数,表示有多少种方案。注意:因为方案数可能很多,请输出方案数对 \(10^6+7\) 取模的结果。

输入输出样例 #1

输入 #1

2 4
3 2

输出 #1

2

说明/提示

【数据范围】

对于 \(20\%\) 数据,有 \(0<n \le 8,0<m \le 8,0 \le a_i \le 8\)

对于 \(50\%\) 数据,有 \(0<n \le 20,0<m \le 20,0 \le a_i \le 20\)

对于 \(100\%\) 数据,有 \(0<n \le 100,0<m \le 100,0 \le a_i \le 100\)

NOIP 2012 普及组 第三题

孩子,这不背包



dp 分类

线性:

一维

P1091 [NOIP 2004 提高组] 合唱队形,略

二维

P1439 【模板】最长公共子序列,略

高维

P1004 [NOIP 2000 提高组] 方格取数,小小四维可笑可笑也许三维也行

区间:

P1775 石子合并(弱化版),略

环形:

P1880 [NOI1995] 石子合并,裂环为链即可

树形:

P1352 没有上司的舞会,过

图:

没有

状压:

P2622 关灯问题II

插头?没有


dp 进阶

小trick:通过交换答案和容积,防止容积过大,\(O(nm)\)爆炸

优化

1.多重背包优化

2.前缀和优化

3.二分/双指针优化

quiz

https://www.luogu.com.cn/problem/P1855

https://www.luogu.com.cn/problem/P2254

https://www.luogu.com.cn/problem/P4342

posted @ 2025-03-18 18:38  yzc_is_SadBee  阅读(13)  评论(0)    收藏  举报