做题记录 25.10.12

· · 个人记录

QOJ #6298. Coloring

a_i$ 向 $i$ 连边,构成外向基环树,则操作等价于每次选择一条边 $u\to v$,令 $c_u\to c_v

t_u 表示结点 uc 的变化次数

显然有 \forall (u\to v),t_v\le t_u

dp_{u,i} 表示基环树的子树 u 中,t_u=i 时,子树内的最大贡献

显然 dp_{u,i}\gets ((i+[u=s])\bmod 2)w_u-ip_udp_{u,n+1}\gets -\infty,每加入一个儿子 v 使 dp_{u,i}\gets dp_{u,i}+ \max_{j=0}^{i+[u=s]} dp_{v,j},前缀 \max 优化可做到 O(n^2)

s 在树部分上时,受其父亲影响点 s 至多变化一次,因此答案为 \max(dp_{s,0},dp_{s,1})(此时显然可以做到时间复杂度 O(n),但意义不大)

s 在环上时,特判环长为 2 的情况:设另一个点为 t,则 s,t 之间要么不操作 st,状态为 1,0,要么操作 s\to t 变为 1,1,要么操作 t\to s 变为 0,0,对应的操作数量为 (0,0),(0,1),(1,0),因此此时答案为 \max(dp_{s,0}+dp_{t,0},dp_{s,0}+dp_{t,1},dp_{s,1}+dp_{t,0})

当环长 >2 时,设环上的点为 p_{1\sim l},其中 p_1=s,且认为此时初始的 t_s=1,则显然有 t_{p_{1\sim l}} 单调不增,可证 t_{p_l}\ge t_s-2

因此枚举 k=1\sim n+1,令 g_{i,0/1/2} 表示 p_{1\sim i}t_{p_i}=t_s-0/1/2 时最大的贡献,则

g_{1,0}\gets dp_{s,k-1}\\ g_{i,j}\gets \max g_{i,0\sim j}+dp_{t_i,j}

\max g_{l,\ast} 更新答案即可

总时间复杂度 O(n^2)

代码

参考