做题记录 25.6.30
\(\textcolor{purple}\odot\) CF1721F Matching Reduction
当匹配数为 \(0\) 时显然剩下的为最大独立集,因此前面最大匹配次操作中删去了最大独立集的补集中的点,其大小等于最大匹配,因此每次操作从补集中任取一点删去即可
显然补集中每个点唯一对应匹配中的一条边,因此容易维护两种询问的答案
时间复杂度 \(O(m\sqrt n+q+tn)\),其中 \(n=n_1+n_2\),\(t=3\)
\(\textcolor{purple}\odot\) CF1720E Misha and Paintings
令 \(m\) 为原本颜色数,当 \(k\ge m\) 时显然最优策略为每次选择一个 \(1\times 1\) 的子矩阵,满足它的颜色在整个矩阵中出现不止一次,将其替换为新的颜色,操作次数为 \(k-m\)
当 \(k<m\) 时,可证只要至多两次操作:
- 选择子矩阵 \((1\sim l,1\sim l)\),将其替换为子矩阵之外存在的一种颜色,设操作后颜色数为 \(m'\),选择 \(m'\ge k\) 的最大的 \(l\),即若选择 \(l+1\) 则会令 \(m<k\)
- 然后选择一个 \((l+1,l+1)\) 为右下角的子矩阵,边长每增加 \(1\),\(m'\) 至多减少 \(2\),因此一定存在一种边长使得 \(m'=k\) 或 \(m'=k-1\),若 \(m'=k-1\) 则令当前选择的子矩阵内填充为新的颜色,否则填充为 \((1\sim l,1\sim l)\) 中选择的颜色
因此转化为判断能否在一次操作内完成
预处理每种颜色的出现范围 \((xl_c\sim xr_c,yl_c\sim yr_c)\)
枚举矩阵边长 \(1\le L\le n\)(特判 \(L=n\)),令 \(c_{i,j}\) 表示完全包含于子矩阵 \((i\sim i+L-1,j\sim j+L-1)\) 中的颜色数量,考虑每种颜色对 \(c\) 的影响为子矩阵加,容易 \(O(n^2)\) 处理出 \(c\)
若存在 \(c_{i,j}\) 使得 \(m-c_{i,j}\) 等于 \(k\) 或 \(k-1\) 则可以一次操作解决
否则需要两次操作
时间复杂度 \(O(n^3)\)
\(\textcolor{blue}\odot\) CF1720D2 Xor-Subsequence (hard version)
令 \(f_i\) 表示以 \(i\) 结尾的最大长度,答案为 \(\max f_i\),则 \([a_x\oplus y<a_y\oplus x]f_y\to f_x\)
而 \(a_x\oplus y<a_y\oplus x\) 等价于存在 \(u\) 使得 \((a_x>>(u+1))=(a_y>>(u+1)),(a_x>>u\&1)=(y>>u\&1),(x>>u\&1)=1-(a_y>>u\&1)\)
在计算 \(f\) 的同时维护 \(mx_{u,v,0/1,0/1}\),表示目前已经计算出的 \(f\) 中,\((a_x>>(u+1))=v,(a_x>>u\&1)=0/1,(x>>u\&1)=0/1\) 的 \(f_x\) 的最大值
直接保存 \(mx\) 空间无法接受,需要对第二维离散化
时间复杂度 \(O(\sum n\log n\log V)\),空间复杂度 \(O(n\log V)\),时间复杂度可做到 \(O(\sum n\log V)\)
\(\textcolor{blue}\odot\) CF1718C Tonya and Burenka-179
相当于求 $\max_{(s,k)} \gcd(k,n)\sum_{i\mid i\equiv s\pmod{\gcd(k,n)}}a_i $
令 \(f_{x,y}=x\sum_{i\mid i\equiv y\pmod x}a_i\),则答案为 \(\max_{x,y}f_{x,y}\)
显然只需要保存 \(x\mid n\) 的 \(f_{x,y}\),用 multiset 保存 \(\{f_{x,\ast}\}\) 时间复杂度为 \(O((n+q)d(n)\log n)\),无法通过
发现最优情况下一定有 \(\frac nx\) 为质数,因此只需要保存 $\omega(n) $ 个 multiset
时间复杂度 \(O((n+q)\omega(n)\log n)\)
\(\textcolor{purple}\odot\) CF1717F Madoka and The First Session
令 \(c_i=\frac{b_i+d_i}2\),其中 \(d_i\) 为点 \(i\) 的度数,则每次操作相当于 \(c_u\gets c_u+1\) 或 \(c_v\gets c_v+1\),最终要使 \(c_i=\frac{a_i+d_i}2\)
建立二分图,\(m\) 个左部点表示每条边,\(n\) 个右部点表示每个点
\(S\to L(i)\),流量为 \([1,1]\)
\(L(i)\to R(u_i),L(i)\to R(v_i)\),流量都是 \([0,1]\)
\(R(i)\to T\),若 \(s_i\) 则流量为 \([\frac{a_i+d_i}2,\frac{a_i+d_i}2]\)(若不是整数则无解),否则流量为 \([0,+\infty)\)
构造方案是容易的
时间复杂度 \(O(m\sqrt{n+m})\)
\(\textcolor{purple}\odot\) CF1716F Bags with Balls
令 \(x=\lceil\frac m2\rceil,y=\lfloor\frac m2\rfloor\),答案为
直接计算时间复杂度 \(O(k^2+\sum k\log n)\),容易优化到 \(O(k^2+\sum k)\)
\(\textcolor{purple}\odot\) CF1716E Swap and Maximum Block
建立线段树,对于一个长为 \(2^k\) 的区间,保存一个长为 \(2^k\) 的数组,其中 \(s\;(s\in[0,2^k))\) 位置保存了当前区间中翻转的位的状态为 \(s\) 的情况下的最大子段和信息,容易 \(O(n2^n)\) 求出所有信息,由此可 \(O(1)\) 回答询问
时间复杂度 \(O(n2^n+q)\),空间复杂度可做到 \(O(2^n)\)
\(\textcolor{purple}\odot\) CF1715F Crop Squares
构造图形为三角形 \((x,0)-(x,m)-(x+1,m)\mid x \in\mathbb N\) 的并(直接构造出的图形相邻三角形顶点处只有一点相连,需要增加一个偏移量以使图形无自交),则答案的 \(y\) 和询问得到的答案一一对应,同理可以得到 \(x\)
询问次数为 \(2\),需要注意一些细节

浙公网安备 33010602011771号