- CF1926G Vlad and Trouble at MIT \(\texttt{*1900}\)。
TAG: \(\texttt{树形 dp}\)
\(dp_{i,S,P}\) 为 \(i\) 的子树内是否存在 S
和 P
的状态。
转移方程为:
当 \(s_i\) 为
C
时dp[x][0][0] += min({ dp[v][1][0] + 1, dp[v][0][1] + 1, dp[v][0][0] }); dp[x][1][0] += min({ dp[v][0][0], dp[v][1][0], dp[v][0][1] + 1 }); dp[x][0][1] += min({ dp[v][0][0], dp[v][1][0] + 1, dp[v][0][1] });
当 \(s_i\) 为
S
时dp[x][1][0] += min({ dp[v][1][0], dp[v][0][1] + 1, dp[v][0][0] });
当 \(s_i\) 为
P
时dp[x][0][1] += min({ dp[v][1][0] + 1, dp[v][0][1], dp[v][0][0] });
代码
- CF850B Arpa and a list of numbers \(\texttt{*2100}\)。
TAG: \(\texttt{暴力,贪心,乱搞}\)
枚举 \(\operatorname{gcd} = g\),对于每一个 \(g\),在每一个大小为 \(g\) 的区间,前一半直接删除,后一半 \(+1\),答案即为所有 \(g\) 的最小值。
代码
- CF1353F Decreasing Heights
TAG: \(\texttt{dp, 暴力}\)
枚举 \(a_{1, 1}\) 的值,然后算出 \((1, 1)\) 到 \((i, j)\) 的步数即 \(a_{i,j} = a_{1, 1} + i + j - 2\),并暴力 \(dp\)。
代码
- CF1034B Little C Loves 3 II \(\texttt{*2000}\)
分类讨论 \(1\) 行、\(2\) 行的情况。
代码
- CF612E Square Root of Permutation \(\texttt{*2300}\)
思考:建 \(i\to q_i\)的边。那么会有环:
- 奇数环 \(a_1,a_2,\cdots,a_n\),那么 \(p\) 的环是 \(a_1,a_3,a_5,\cdots,a_n,a_2,a_4,\cdots,a_{n-1}\)。
- 偶数环 \(a_1,a_2,\cdots,a_n\),那么分为两个环 \(p\) 的环是 \(a_1,a_3,\cdots,a_{n-1}\) 和 \(a_2,a_4,\cdots,a_{n}\)。
所以 \(p\) 的图有环需要满足对于 \(\forall i=2k\),长度为 \(i\) 的环个数为偶数个。 代码
-
CF1184C2 Heidi and the Turing Test (Medium)
转换为切比雪夫距离,双指针 + 线段树即可。
代码; 草稿 -
CF1364D Ehab's Last Corollary \(\texttt{*2100}\)
分讨:
- \(n=k\) 树 :方案 \(1\);否则方案 \(2\)
- \(n > k\) 任意取 k 个节点转换为 \(n=k\)。
代码