做题记录 25.1.28
\(\textcolor{blue}\odot\) CF387D George and Interesting Graph
考虑枚举中心点 \(u\)
设原图中 \(u\) 的出边数为 \(out(u)\),则为了补足 \(u\) 的 \(u\) 条出边,需要新增 \(n-out(u)\) 条边(因为没有重边,所以不需要考虑去重)
令 \(u\) 的入边数(不含自环)为 \(in(u)\),则为了补足 \(n-1\) 条 \(v\to u\) 的边,需要新增 \(n-1-in(u)\) 条
令 \(G'\) 为原图删去 \(u\) 和与之相连的边后的图,则要为 \(G'\) 中每个点确定一条出边和一条入边
设 \(m'\) 为 \(G'\) 中边数
建立二分图,两侧各 \(n\) 点,\(G'\) 中 \(u\to v\) 连接左部 \(u\) 和右部 \(v\),然后求出最大匹配
设最大匹配数为 \(p\),则在 \(G'\) 中保留匹配的 \(p\) 条边,删去剩余 \(m'-p\) 条边,然后加上 \(n-1-p\) 条边
因此,取 \(u\) 为中心点时,总操作次数为 \(n-out(u)+n-1-in(u)+m'-p+n-1-p=3n+m'-out(u)-in(u)-2p-2\)
所有 \(u\) 取最小即可
若使用网络流求最大匹配,时间复杂度为 \(O(nm\sqrt n)\),若使用匈牙利算法,时间复杂度为 \(O(n^2m)\)
\(\textcolor{blue}\odot\) P6008 [USACO20JAN] Cave Paintings P
考虑并查集
初始每个非障碍格子为一个联通块,方案数为 \(1\)(为空)
从下向上依次扫描每一行,对于当前扫描到的行 \(i\),用其中非障碍格子将 \(i-1\) 行中的联通块拼接(两个联通块合并得到的联通块方案数为两者方案数之积)
然后对于所有 包含第 \(i\) 行的格子的联通块,将其方案数加一(因为可以选择该格子从而使整个联通块充满)
答案为最终的联通块的方案数之积
\(\textcolor{blue}\odot\) P9017 [USACO23JAN] Lights Off G
每一次操作对原始序列的影响可以分开计算,因此分别考虑初始的 \(b\) 和对 \(b\) 的操作 对 \(a\) 的影响
设最终操作了 \(r\) 次,若在第 \(i\) 次操作时翻转了 \(b\) 的第 \(k\) 位,其对最终 \(a\) 的影响为 \([k,k+(r-i)]\) 中都翻转(循环位移,即若位置 \(>n\) 则减 \(n\))
令 \(f_{i,j}\) 表示从 \(a\) 全 \(0\) 开始经过 \(i\) 次操作 \(a\) 能否变为 \(j\),其相当于询问 能否选出长为 \(n\) 的环上的 \(i\) 个区间,长度分别为 \(1\sim i\),满足对于每个 \(k\),环上第 \(k\) 个位置的覆盖次数的奇偶性等于 \(j\) 二进制下第 \(k\) 位
可证答案不超过 \(3n\),因此 \(f\) 第一维只要计算到 \(3n\) 即可
显然 \(f_{0,0}=1\),转移时枚举区间长度和区间位置,暴力实现为 \(O(n^22^n)\) 的
显然循环同构的 \(n\) 个 \(j\) 的 \(f_{i,j}\) 值相同,因此只要记录一次,因此时间复杂度降为 \(O(n2^n)\)
对于每组询问 \(a,b\),枚举答案,算出目前为止初始的 \(b\) 对 \(a\) 的影响总和,然后根据 \(f\) 判断此时是否合法
时间复杂度 \(O(n2^n+qn)\)
\(\textcolor{purple}\odot\) CF53E Dead Ends
状压 \(dp\)
令 \(f_{s,t}\) 表示当前为止选择的生成树包含的点集为 \(s\),其中子集 \(t\) 为叶子的方案数
直接的想法是每次加入一条边及一个点,但是这样可能出现重复
每次加入一个叶子后,保持其为当前所有叶子中编号最大的一个,可证合法加入顺序和树构成双射
因此每加入一条边 \(u-v\),其中 \(u\in s,v\notin s\),都要保证 \(\max\left(t\cap\complement_U\{u\}\right)<v\)
对于每个 \(f_{s,t}\),枚举加入的边转移即可
时间复杂度 \(O(n^23^n)\)

浙公网安备 33010602011771号