动态规划
「SCOI2008」奖励关-期望dp
· ✏️ 424 words · ☕ 1 mins read

系统将依次随机抛出 $k$ 次宝物,每次你都可以选择吃或者不吃。宝物一共有 $n$ 种,系统每次抛出这 $n$ 种宝物的概率都相同且相互独立。

吃一次第 $i$ 种宝物将得到 $P_i$ 分,但并不是每种宝物都是可以随意获取的。第 $i$ 种宝物有一个前提宝物集合 $S_i$ 。只有当 $S_i$ 中所有宝物都至少吃过一次,才能吃第 $i$ 种宝物。注意,$P_i$ 可以是负数。

假设你采取最优策略,平均情况你一共能在奖励关得到多少分值?


「SCOI2010」股票交易-dp+单调队列
· ✏️ 642 words · ☕ 2 mins read

lxhgww预测到了未来 $T$ 天内某只股票的走势,第 $i$ 天的股票买入价为每股 $AP_i$ ,第 $i$ 天的股票卖出价为每股 $BP_i$ (数据保证对于每个 $i$ ,都有$AP_i \ge BP_i$ ),第$i$ 天的一次买入至多只能购买 $AS_i$ 股,一次卖出至多只能卖出 $BS_i$ 股。两次交易(某一天的买入或者卖出均算是一次交易)之间,至少要间隔 $W$ 天;在任何时间一个人的手里的股票数不能超过 $MaxP$ 。

在第 $1$ 天之前,lxhgww手里有数目无限的钱,但是没有任何股票,在 $T$ 天以后, lxhgww 能赚到的钱最多是多少?


「POI2014」PTA-单调队列
· ✏️ 473 words · ☕ 1 mins read

给定 $n$ 个点的高度,规定从 $1$ 点出发,跳到比高度小于当前点的点不消耗体力,否则消耗一点体力,最后到达 $n$ 点。

$q$ 次询问,每次询问有一个步伐限制 $k$ ,求最少耗费的体力。


「CQOI2016」手机号码-数位dp
· ✏️ 785 words · ☕ 2 mins read

手机号码是一个有 $11$ 位且不含前导 $0$ 的数。满足条件手机号码的必须同时满足:号码中出现至少 $3$ 个相邻的相同数字;号码中不能同时出现 $8$ 和 $4$ 。

给定两个数 $L$ 和 $R$ ,统计出 $[L,R]$区间内所有满足条件的手机号码的个数。 $L$ 和 $R$ 都是符合定义的手机号码。


「ZJOI2010」数字计数-数位dp
· ✏️ 689 words · ☕ 2 mins read

给定两个正整数 $a$ 和 $b$ ,求在 $[a,b]$ 中的所有整数中,每个数码(digit)各出现了多少次。


「SCOI2015」小凸玩密室-树形dp
· ✏️ 1774 words · ☕ 4 mins read

小凸和小方相约玩密室逃脱,这个密室是一棵有 $n$ 个节点的完全二叉树,每个节点有一个灯泡。点亮所有灯泡即可逃出密室。

每个灯泡有个权值 $a_i$ ,每条边也有个权值 $b_i$ 。点亮第 $1$ 个灯泡不需要花费,之后每点亮 $1$ 个新的灯泡 $v$ 的花费,等于上一个被点亮的灯泡 $u$ 到这个点 $v$ 的距离 $D _ {u,v}$ ,乘以这个点的权值 $a_v$ 。在点灯的过程中,要保证任意时刻所有被点亮的灯泡必须连通,在点亮一个灯泡后必须先点亮其子树所有灯泡才能点亮其他灯泡

请告诉他们,逃出密室的最少花费是多少。


「HAOI2009」毛毛虫-树形dp
· ✏️ 380 words · ☕ 1 mins read

对于一棵树,我们可以将某条链和与该链相连的边抽出来,称其为一个“毛毛虫”。求在这个树中点数最多的毛毛虫的点数。

$n < 300000$


「NOI2009」二叉查找树-区间dp
· ✏️ 1050 words · ☕ 3 mins read

给定 $n$ 个结点的数据值 $V_i$ ,权值 $P_i$ ,访问频度 $T_i(T_i \geq 0)$ 。对于 $\forall i,j \in V$ 且 $i \neq j$ ,有 $V_i \neq V_j, P_i \neq P_j$ 。

现令这 $n$ 个点组成一颗二叉树,且满足 $\forall , i \in V$ ,若 $p$ 为 $i$ 的左子节点, $q$ 为 $i$ 的右子节点,则 $V_p < V_i < V_q$ 且 $P_i < P_p,; P_i < P_q$ 。可以证明,这样的二叉树是唯一的。点$i$ 在树中的深度 $D_i$ 定义为它到根的距离加 $1$ 。定义结点 $i$ 的访问代价 $E_i = T_i \times D_i$ 。可以修改每个点的权值为任意实数,其代价均为给定的正整数 $K$ ,但需保证任两点权值仍互不相同。

现求上文所述二叉树中,其 $\sum^n _ {i = 1}{E_i} + \sum K$ 的最小值。


「ZJOI2007」时态同步-树形dp
· ✏️ 761 words · ☕ 2 mins read

给定一棵由 $n$ 个节点构成的树。

在树上存在一个“激发器”,标号为 $s$ 。当激发器工作后,电流会延边传向每一个相邻节点。而中间节点接收到电流后,会将该电流传向与它连接并且尚未接收到电流的节点。对于每条边 $e$ ,电流通过它需要的时间为 $t_e$ ,电流的转发可以认为是在瞬间完成的。最终,激电流将到达一些“终止节点”――接收电流之后不再转发的节点。

使用一次道具可以使得电流通过某条边的时间增加一个单位。请问最少使用多少次道具才可达到每一个“终止节点”同时收到电流?


「Luogu1043」数字游戏-dp
· ✏️ 806 words · ☕ 2 mins read

在你面前有一圈整数(一共 $n$ 个),你要按顺序将其分为 $m$ 个部分,各部分内的数字相加,相加所得的 $m$ 个结果对 10 取模后再相乘,最终得到一个数 $k$ 。游戏的要求是使你所得的 $k$ 最大或者最小。