# 算法笔记 ## 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. 通过样例模拟带入样例,特殊值代入法