mirror of
https://gitcode.com/Zengtudor/alg2025.git
synced 2025-10-15 12:32:19 +00:00
.vscode | ||
include/bits | ||
src | ||
.clang-format | ||
.gitignore | ||
CMakeLists.txt | ||
README.md |
算法笔记
P6476 题解易错点
- 循环顺序:dp注意必须从遍历顺序(i从n-2递减),正向遍历会导致状态转移错误
- 清空操作优化:每次使用后需要清空tot数组,但直接memset会超时,改用标记数组记录修改位置
- 下标偏移:结构体T使用of常量处理负数下标,数组大小需要*2
- 状态转移公式:注意容斥原理的应用,dp[i][j] = 当前三元组数 + 子区间累计值 - 重复部分
线性动态规划优化为$O(n\log{n})$方法
如果是递增序列就lower_bound
如果是递减序列就手写二分
区间dp
步骤
- 根据问题推出dp含义
- 根据规则写出dp的状态转移公式
- 处理边界问题
dp[i][j], dp[0][0], dp[i][0], dp[0][j], dp[i][i], dp[j][j]
- 编辑距离 i-1,j i,j-1
- 合并石子 1~k,k+1~i
- 网捉蛇 1~k用j-1, k+1~i用1
超时优化的三种方法
- 预处理(排序最常用)
- 二分
- 数学方法
阅读程序的三个步骤
- 通读程序
- 通过样例模拟带入样例,特殊值代入法