ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

10 3

10 3
  • 10.3
    • P2679
      • 很容易想到定义状态 \(f_{i,j,k}\) 表示匹配到了 s 的第 \(i\) 个字符,t 的第 \(j\) 个字符用了 \(k\) 个串的方案数
      • 然后你就会发现爆空间了
      • 这时候我们可以使用滚动数组滚动第一维,令 \(f_{i,j,0/1}\) 表示匹配到了 t 的第 \(i\) 个字符,用了 \(j\) 个串,\(j\) 是否匹配的是 \(i-1\) 的方案数
    • P5329
      • 你会发现当有 连续一段相同字符的时候,删掉哪一个最后形成的字符串是相等的,但是由于我们要按 \(i\) 从小到大排序,故它们的编号是连续的
      • 所以我们把问题转换为了相邻字母互不相同的时候该怎么排序
      • 很显然的一件事,当第二个字符大于第一个字符的时候,那 \(s_1\) 就是最大的,否则就是最小的,以此类推即可
    • P3080
      • 我们很容易地可以发现每次必定是一个连续的区间故可以考虑区间DP
      • 定义 \(f_{i,j,0/1}\) 为弄完 \(i-j\) 最后留在 \(i/j\) 的最小代价
    • P4265
      • 很显然可以定义 \(f_{i,j}\) 表示到第 \(i\) 块地砖,用的是第 \(j\) 双鞋是否可行
      • 转移即可,用发散型 dp 感觉更好转移
    • P2886 倍增floyd,矩阵加速
      • 我们发现在 floyd 的转移中 \(f_{i,j} = \min(f_{i,k}+f_{k,j})\)
      • 如果定义 \(a_{i,j}\) 为在钦定走 \(x\) 条边的情况下 \(i\)\(j\) 的最短长度,\(b\) 钦定为 \(y\) 条边
      • 那么若 \(f_{i,j}\) 表示的是第 \(x+y\) 条边的话那就有 \(f_{i,j} = \min(a_{i,k}+b_{k,j})\) 我们就可以使用矩阵快速幂进行转移
      • 因为 \(\min\) 运算具有结合律
    • P1800
      • 一眼可以二分,定义 \(f_i\) 为第一个公司做了 \(i\) 个的时候第二个公司已经做了的模块的最大数,转移即可
返回列表