做题记录 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  阅读(16)  评论(0)    收藏  举报