树形 dp 做题笔记

在这个随笔中,会有笔者的一些做题笔记,包括但不限于树形 dp 的思想、解题技巧、代码实现等。

  • CF1926G Vlad and Trouble at MIT \(\texttt{*1900}\)

TAG: \(\texttt{树形 dp}\)

\(dp_{i,S,P}\)\(i\) 的子树内是否存在 SP 的状态。

转移方程为:

\(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] });

代码

  • 1353F Decreasing Heights

TAG: \(\texttt{dp, 暴力}\)

枚举 \(a_{1, 1}\) 的值,然后算出 \((1, 1)\)\((i, j)\) 的步数即 \(a_{i,j} = a_{1, 1} + i + j - 2\),并暴力 \(dp\)

代码

posted @ 2024-08-20 15:39  qmwneb946  阅读(12)  评论(0编辑  收藏  举报