做题记录 26.4.13

\(\textcolor{purple}\odot\) AT_agc032_c [AGC032C] Three Circuits

显然必须有欧拉回路,即存在奇度点则不合法

由于 \(m\ge 1\) 而无需考虑孤点的情况

若存在度数 \(>4\) 的点则显然合法

否则只有 \(2\) 度点和 \(4\) 度点

若所有点度数都是 \(2\) 则图为一个简单环,显然不合法

若存在恰好一个 \(4\) 度点则图为两个环交于一点,显然不合法

若存在 \(\ge 3\)\(4\) 度点显然合法

存在 \(2\) 个四度点分为两种情况,设两个四度点为 \(u,v\),要么存在四条链 \(u\to v\),要么存在两条 \(u\to v\) 和一条 \(u\to u\) 一条 \(v\to v\)

容易通过 \(\text{dfs}\) 判断

时间复杂度 \(O(n+m)\)

代码

参考

\(\textcolor{purple]\odot\) AT_agc034_e [AGC034E] Complete Compress

枚举终点,令其为根

\(g_u=\sum_{v\in \text{subtree}(u)}[s_v] \text{dis}(u,v)\)

显然最优情况下每次操作必然让 \(g_u\) 减去 \(2\),因此若合法则容易计算步数,考虑如何判断是否合法

\(f_u\) 表示若干次操作后子树内 \(g\) 的最小值

\(ct_u\) 表示子树内 \(s=1\) 的数量,则

\[f_u=\begin{cases} g_u\bmod 2 & \forall v\in \text{son}(u), f_v+g_v+2ct_v<g_u\\ g_u-\max_{v\in\text{son}(u)}(f_v+g_v+2ct_v) & \text{otherwise} \end{cases} \]

时间复杂度 \(O(n^2)\),容易换根优化到 \(O(n)\)

代码

参考

posted @ 2026-04-16 15:50  Hstry  阅读(5)  评论(0)    收藏  举报