codeforces 动态规划 100 题 30 天专项训练

当旅途结束时,我希望我们的回忆是充满快乐的~

Day 1

366C

思路

  1. 比值约束 \(\frac{\sum\limits_{i_1,i_2,...,i_m\in\{1,2,...,n\}} a_{i_m}}{\sum\limits_{i_1,i_2,...,i_m\in\{1,2,...,n\}} b_{i_m}}=k\) 转化为线性约束 \(\sum\limits_{i_1,i_2,...,i_m\in\{1,2,...,n\}} a_{i_m}-kb_{i_m}=0\)
  2. 状态 \(dp(i,st)\) 定义为:遍历前 \(i\) 个物品,此时 \(\sum\limits_{i_1,i_2,...,i_m\in\{1,2,...,n\}} a_{i_m}-kb_{i_m}=st\) 的最大美味和。

注意点

  1. 枚举状态和状态转移时都要考虑 \(st\) 的合法性。
  2. 不能从不合法的状态进行转移,会导致答案错误。

Day 2

340D

  1. \(G\)\(i\)\(j\) 连边等价于 \(i<j,a_i>a_j\)
  2. \(\forall G\)\(G\) 的最大独立集的大小等于补图 \(G'\) 的最大团的大小。
  3. 求最长上升子序列。
posted @ 2025-06-28 11:24  shyiaw  阅读(10)  评论(0)    收藏  举报