Go to file
2025-10-15 16:30:07 +08:00
.vscode update 2025-02-09 13:50:01 +08:00
include/bits update 2025-02-07 14:36:24 +08:00
src refactor: 将quick_exit替换为_Exit以提高代码一致性 2025-10-15 16:30:07 +08:00
.clang-format update 2025-08-08 17:40:22 +08:00
.gitignore update 2025-08-09 12:27:50 +08:00
CMakeLists.txt update 2025-08-22 20:50:15 +08:00
README.md docs: 更新README添加P6476题解易错点 2025-10-11 12:13:40 +08:00

算法笔记

P6476 题解易错点

  1. 循环顺序dp注意必须从遍历顺序i从n-2递减正向遍历会导致状态转移错误
  2. 清空操作优化每次使用后需要清空tot数组但直接memset会超时改用标记数组记录修改位置
  3. 下标偏移结构体T使用of常量处理负数下标数组大小需要*2
  4. 状态转移公式注意容斥原理的应用dp[i][j] = 当前三元组数 + 子区间累计值 - 重复部分

线性动态规划优化为$O(n\log{n})$方法

如果是递增序列就lower_bound

如果是递减序列就手写二分

区间dp

步骤

  1. 根据问题推出dp含义
  2. 根据规则写出dp的状态转移公式
  3. 处理边界问题

dp[i][j], dp[0][0], dp[i][0], dp[0][j], dp[i][i], dp[j][j]

  1. 编辑距离 i-1,j i,j-1
  2. 合并石子 1~k,k+1~i
  3. 网捉蛇 1~k用j-1, k+1~i用1

超时优化的三种方法

  1. 预处理(排序最常用)
  2. 二分
  3. 数学方法

阅读程序的三个步骤

  1. 通读程序
  2. 通过样例模拟带入样例,特殊值代入法