【题单】DP专题训练1

https://cplusoj.com/d/senior/contest/69ddb6001363e1a076ab47ed

P5319 [BJOI2019] 奥术神杖

先建出 AC 自动机,log 一下转 01 分数规划,跑 dp 做 AC 自动机即可。

P5323 [BJOI2019] 光线

考虑每层玻璃第一次被穿过的时候,一定有 \(a_i\) 的贡献。
现在考虑第一次光线到达第 \(i\) 层玻璃后,这其中有多少光线会第一次到达第 \(i+1\) 层玻璃。
考虑设 \(f_i\) 表示 1 单位的光线在 \(i\) 玻璃开始向下发射时,最后会有多少回到第 \(i\) 层玻璃。
显然有:\(\frac{1}{1-b_i(b_{i-1}+a_{i-1}^2f_{i-1})}\times \frac{1}{b_i}\),注意 0 不存在逆元。
那么答案即为 \(\prod_{i=2}^n (f_ib_i+1)a_i\)。

X Number

CF356D Bags and Coins

考虑选择若干个 \(a_i\) 之和为 \(s\),且最大的必须被选择,那么没有被选择的套在最大的袋子里即可。
bitset 优化 01 背包吧。
构造方案的话考虑存下来每一层,发现做不到。那么比较笨的方式是跑三次,这样只用存三分之一的空间可以通过。

P5298 [PKUWC2018] Minimax

线段树合并维护 max/min 卷积即可。

P5299 [PKUWC2018] Slay the Spire

假设当前加强牌贡献为 \(P\),攻击牌总和为 \(S+x\),现在去掉一个攻击牌 \(x\),加入一个加强牌 \(y\) 的影响:\(PSy-(P(S+x))=P(S(y-1)-x)\),则要想要收益非负则 \(S(y-1)>x\)。
所以有结论:

  • 最大的攻击牌一定要保留。
  • 从大到小尽量使用加强牌,数量不够从大到小用攻击牌凑。

如果只有 \(B<k\) 张加强牌,那么攻击牌就要从大到小使用 \(A=k-B\) 张。
否则,\(B\ge k\),只需要保留前 \(k-1\) 张,攻击牌选择最大的即可。

posted @ 2026-04-14 18:35  TallBanana  阅读(20)  评论(0)    收藏  举报