做题记录 26.4.2
\(\textcolor{purple}\odot\) AT_agc020_e [AGC020E] Encoding Subsets
称 0 1 (Sxk) 为编码的单元
令 \(F(s,0/1)\) 表示是否强制要求编码为单元,字符串 \(s\) 所有子集的编码方案数
若不强制要求为单元,则可以枚举分割点,分离出最后一个单元递归处理
若强制要求为单元,特判 \(|s|=1\) 的情况,然后枚举周期,将 \(s\) 各个周期取交后并起来递归处理
记忆化搜索可过,可证复杂度正确
\(\textcolor{purple}\odot\) AT_agc024_d [AGC024D] Isomorphism Freak
显然一棵树以两个结点为根情况下同构的必要条件为两者到树直径中心距离相同,因此答案上限为 \(\lceil\frac c2\rceil\)(其中 \(c\) 为直径上点数)
当 \(c\) 为偶数时的构造为取直径的正中间边为根,补全所有子树使得同一层的儿子数量相同,令 \(c_i\) 为第 \(i\) 层结点的最大儿子数(特别地,第 \(0\) 层的 \(c\) 为两个结点的儿子数较大值的两倍),则最小叶子数为 \(\prod c_i\)
当 \(c\) 为奇数时,可以取正中间的点为根,也可取任意一条与之相邻的边为根,分别考虑即可
时间复杂度 \(O(n^2)\)
\(\textcolor{purple}\odot\) AT_agc026_d [AGC026D] Histogram Coloring
可以分离为行和列分别选择一个 \(0/1\) 值,不能存在相同的相邻两列和相同的相邻两行相交的情况
对 \(h\) 建立笛卡尔树,令 \((f,g)\) 表示子树中列中存在/不存在相邻的相同值的方案数
容易做到 \(O(n)\)

浙公网安备 33010602011771号