摘要: 二维状压 DP 二维状压 DP 一般是放置问题。 [USACO06NOV] Corn Fields G 状态 \(dp_{i,j}\) 放好前 \(i\) 行,且第 \(i\) 行状态为 \(j\) 的方案数。 答案 \(\sum^{2^n-1}_{i=0} dp_{m,i}\) 状态转移方程 先假 阅读全文
posted @ 2025-05-18 19:20 LRRabcd 阅读(23) 评论(0) 推荐(0)
摘要: 环形区间 DP 环形区间 DP 断环成链就可以了,答案就可以从 \([1,n],[2,n+1],[3,n+2],\cdots,[n,2n-1]\) 这些区间的答案。 [NOI1995] 石子合并 代码 #include<bits/stdc++.h> #define int long long usi 阅读全文
posted @ 2025-05-11 18:50 LRRabcd 阅读(7) 评论(0) 推荐(0)
摘要: [USACO07OPEN] Cheapest Palindrome G 仍然是区间 DP,但时间复杂度不可能是 \(\mathcal{O}(m^3)\)。 状态 设 \(dp_{i,j}\) 表示将区间 \([i,j]\) 变成回文串的最小代价。 答案 问题是将整个字符串改为回文串,所以答案是\(d 阅读全文
posted @ 2025-04-21 14:42 LRRabcd 阅读(32) 评论(0) 推荐(0)
摘要: 石子合并(弱化版) 状态 \(dp_{i,j}\) 表示把 \([i,j]\) 合成一堆所需要的最小代价。 答案 最小代价显然是 \(dp_{1,n}\)。 状态转移方程 可以把区间 \([i,j]\) 分成 两段 \([i,k],[k+1,j](i\leq k<j)\),所以 \(dp_{i,j} 阅读全文
posted @ 2025-04-14 13:21 LRRabcd 阅读(10) 评论(0) 推荐(0)
摘要: 100000!= 2824229407 9603478742 9342157802 4535518477 4949260912 2485057891 8086542977 9509010630 1787255177 1413831163 6107136117 3736196295 147499618 阅读全文
posted @ 2025-04-12 12:07 LRRabcd 阅读(47) 评论(0) 推荐(0)
摘要: 矩阵 矩阵类似于二维数组: \(A=\begin{bmatrix}a&b\\ c&d\end{bmatrix}\) 矩阵的用途 解方程。 加速线性 DP。 加速 Floyd。 常数乘法 \(Ak=\begin{bmatrix}ak&bk\\ ck&dk\end{bmatrix}\) 矩阵乘法 若 \ 阅读全文
posted @ 2025-03-31 13:00 LRRabcd 阅读(106) 评论(0) 推荐(0)
摘要: 最近公共祖先定义 树上的两个点 \(a\) 和 \(b\),它们的祖先中相同且深度最深的节点就是 \(a\) 和 \(b\) 的最近公共祖。 求法 1.暴力 把 \(a\) 和 \(b\) 的所有祖先都标记上,在从下往上找第一个两个都标记了的点。单次询问的时间复杂度 \(\mathcal{O}(de 阅读全文
posted @ 2025-03-24 12:46 LRRabcd 阅读(23) 评论(0) 推荐(0)
摘要: 树的中心定义 一棵树,当点 \(u\) 为根时,树的深度最小,\(u\) 就是树的中心。 关于树的中心的性质 树的中心最多有两个。如果有两个,一定相邻。 所有点到它最远的点的路径中一定有树的直径。 当书的中心为根时,以根为起点的最长链与次长链构成树的直径。 树的中心一定在树的直径上。 树的中心的求法 阅读全文
posted @ 2025-03-10 12:24 LRRabcd 阅读(110) 评论(0) 推荐(0)
摘要: \(\texttt{Floyd}\) 全源最短路 使用环境:\(n\leq 500\),可以有负边权 时间复杂度:\(\mathcal O(n^3)\) void Floyd(){ for(int k=1;k<=n;k++){ for(int i=1;i<=n;i++){ for(int j=1;j 阅读全文
posted @ 2025-03-08 12:15 LRRabcd 阅读(18) 评论(0) 推荐(0)