做题记录 25.9.1
\(\textcolor{blue}\odot\) AT_abc209_e [ABC209E] Shiritori
取前缀和后缀分别建立两点,一个字符串为一条边
令 \(f_u\) 表示 \(u\) 为先手时的情况,为 \(-1\) 表示先手败,\(0\) 表示平,\(1\) 表示胜,本题转移为若后继都是必败态则当前状态必胜,反之必败,特别地无出边的 \(f_u=1\),若为 \(\text{DAG}\) 则直接在反图上转移即可,若存在环,且环存在至少一条出边指向 \(f_v=1\),则该点为 \(-1\),由此推出剩余点,若不存在出边或出边都是 \(-1\),则环上点都是 \(0\)
在反向图上拓扑排序时,设目前要扩展 \(u\),设 \(u\to v\) 且 \(f_v=0\)(初始令 \(f_\ast=0\)),若 \(f_u=1\),则 \(f_v=-1\) 并将 \(v\) 加入队列,若 \(f_u=-1\) 且是 \(v\) 最后一条入边,则 \(f_v=1\) 并将 \(v\) 加入队列
时间复杂度 \(O(n+\sum |s_i|)\)
\(\textcolor{blue}\odot\) P3530 [POI 2012] FES-Festival
先按差分约束建边,求出 \(\text{SCC}\),显然 \(\text{SCC}\) 之间独立,每个 \(\text{SCC}\) 内用 \(\text{Floyd}\) 求出最短路,若存在 \(ds_{i,i}<0\) 则无解,否则这一 \(\text{SCC}\) 的贡献为 \(\text{SCC}\) 内最短路的最大值加一
时间复杂度 \(O(n^3)\)

浙公网安备 33010602011771号