做题记录 26.3.31
\(\textcolor{purple}\odot\) AT_agc013_d [AGC013D] Piling Up
令 \(f_{i,j}\) 表示 \(i\) 次操作后 \(j\) 个红色的方案数,容易 \(O(nm)\) \(dp\),对 \((n,m)\) 和 \((n-1,m)\) 分别求一遍即可
时间复杂度 \(O(nm)\)
\(\textcolor{purple}\odot\) AT_agc013_e [AGC013E] Placing Squares
拆贡献,转化为将 \(1\sim n\) 划分为若干段,每一段中先后选择两个位置,部分位置不能分开,令 \(f_{i,0/1,0/1}\) 表示 \(1\sim i\),最后一段是否选择第一个位置,是否选择第二个位置,容易矩阵优化到 \(O(m\log n)\)
\(\textcolor{purple}\odot\) AT_agc016_d [AGC016D] XOR Replace
令 \(a_{n+1}=\bigoplus_{i=1}^n a_i\),\(b\) 同理,则等价于每次选择一个位置和 \(n+1\) 位置交换,求最小操作次数
显然若两个数列(加入 \(n+1\) 位置后)的可重集不同则无解,其它情况必然有解,一个构造为用三次操作交换任意两个位置,考虑优化操作次数
假设确定了每个 \(a_i\) 在 \(b_i\) 中对应的位置,得到一个置换,对于其中任意一个置换环,先一次操作使 \(n+1\) 连到置换环上(若 \(n+1\) 本来就在置换环上则无需这次操作),之后每次操作可以使 \(n+1\) 下一个元素独立为自环
从而操作次数为 \(a_i\ne b_i\) 的 \(i\) 数量加上不含 \(n+1\) 的置换环数量,需要最小化后者
建图,\(a_i\) 和 \(b_i\) 连边,则后者等于不含 \((a_{n+1},b_{n+1})\) 的非孤点连通块数量(显然任意一个连通块都存在欧拉回路,从而可以对应一个置换环)
容易做到 \(O(n\log n)\)
\(\textcolor{purple}\odot\) AT_agc016_e [AGC016E] Poor Turkeys
令 \(f_{i}\subset [1,n]\) 表示为了保留 \(i\) 而需要间接保留的集合,初始 \(f_i=\{i\}\),倒序枚举 \((u,v)\),若 \(u,v\) 都在 \(f_i\) 中则 \(i\) 无法被保留,若其中一个在 \(f_i\) 中则另一个也加入
最后枚举可能被保留的点对 \(i<j\),若 \(f_i\cap f_j\ne\varnothing\) 则可以被保留
时间复杂度 \(O(nm+\frac{n^3}\omega)\)

浙公网安备 33010602011771号