做题记录 25.7.22

\(\textcolor{purple}\odot\) CF1685D1 Permutation Weight (Easy Version)

即给定排列 \(p_{1\sim n}\),求出排列 \(q_{1\sim n}\),使得 \(\sum_{i=1}^n |q_i-p_{q_{{i\bmod n}+1}}|\) 最小

\(w_{q_{{i\bmod n}+1}}\gets q_i\),则要最小化 \(\sum_{i=1}^n |p_i-w_i|\)

显然 \(w\) 只能有一个置换环,得到 \(w\) 后求出 \(q\) 是容易的(按逆序依次取置换环上的点得到 \(q\)),问题转化为求出一个合法的 \(w\)

枚举 \(1\le x<n\),若值 \(x\)\(x+1\) 不在 \(w\) 的同一置换环中,则交换两个值的位置

显然最终代价为 \(2c-2\),其中 \(c\)\(w\) 的初始置换环数量,可以证明这样最优

容易做到 \(O(\sum n^2)\)

代码

参考

\(\textcolor{purple}\odot\) CF1684G Euclid Guess

显然 \(\exists i,t_i>\frac m2\) 时无解

当一个 \(t_i\le \frac m3\) 时,构造 \((3t_i,2t_i)\) 即可

\(\frac m3<t_i\le \frac m2\),设是由 \((x,y)\) 得到的,其中 \(x>y\),则有 \(x\bmod y=t_i\),显然 \(y>t_i\),因此 \(x\ge y+t_i\),显然 \(x\le m< 2y+t_i\),因此 \(x=y+t_i\)

因此由 \((x,y)\) 得到 \((y,x\bmod y)=(y,t_i)\),再得到 \((t_i,y\bmod t_i)\)

\(t_i\mid y\),设 \(y=kt_i\)\(x=y+t_i=(k+1)t_i\le m\),因此 \(k<2\),而 \(y>t_i\),因此 \(k>1\),即无解,因此 \(t_i\nmid y\)

因此 \(y\bmod t_i\in\{t\}\),设为 \(t_j\)\(t_j+kt_i=y\),显然 \(k=1\)

\((t_i,y\bmod t_i)=(t_i,t_j)\) 变为 \((t_j,t_i\bmod t_j)\)

综上有 \((x,y)=(2t_i+t_j,t_i+t_j)\),变化过程为 \((2t_i+t_j,t_i+t_j)\to (t_i+t_j,t_i)\to(t_i,t_j)\),且有 \(\frac m3< t_i\le \frac m2\),而 \(2t_i+t_j\le m\),可得 \(t_j\le \frac m3\)

\(t_j\nmid t_i\),则 \((t_i,t_j)\) 继续变化的过程中,最后一个 \(r\ne 0\) 即为 \(r=\gcd(t_i,t_j)\),显然 \(r\in \{t\}\)\(r\mid t_i\),取 \(t_j=r\) 可以节约若干个 \(\le \frac m3\)\(t_j\),显然不劣

因此有 \(t_j\le \frac m3\)

建立二分图,每个 \(t_i\le \frac m3\) 为一个左部点,其余为右部点

对于左部点 \(t_j\) 和右部点 \(t_i\),若 \(t_j\mid t_i\)\(2t_i+t_j\le m\),则连边

若最大匹配没有用尽右部点则无解,否则对于每组匹配的 \((t_i,t_j)\) 构造 \((2t_i+t_j,t_i+t_j)\),不在匹配中的 \(t_j\) 单独构造

总时间复杂度 \(O(n^2)\),瓶颈在于二分图匹配

代码

参考

\(\textcolor{purple}\odot\) CF1684F Diverse Segments

\(llp_r\) 表示 根据给定的限制,必须有 \(llp_r\sim r\) 中数两两不同,对于每条限制 \(l,r\),令 \(llp_r\gets \min(llp_r,l)\),最后做一遍后缀 \(\min\) 即可

转化为对于每个 \(a_i\)\(\forall j\in[llp_i,i),a_j\ne a_i\)

\(l_i\)\([llp_i,i)\) 中第一个等于 \(a_i\) 的位置,\(r_i\) 为最后一个等于 \(a_i\) 的位置,若不存在则 \(l_i=n+1,r_i=0\)

转化为当选择的区间不包含 \(i\) 时,必须包含 \([l_i,r_i]\)

双指针,用 multiset 维护目前没有选择的位置中的总限制

总时间复杂度 \(O(m+n\log n)\)

代码

参考

\(\textcolor{purple}\odot\) CF1682F MCMF?

一组询问的答案为 \(\sum_{l\le i<r}(a_{i+1}-a_i)|\sum_{j=i}^l b_j|\),将绝对值拆开转化为二维数点,时间复杂度 \(O((n+q)\log n)\)

代码

参考

\(\textcolor{blue}\odot\) CF1681F Unique Occurrences

显然不同颜色之间贡献独立,考虑一种颜色 \(w\) 的贡献

设删去颜色为 \(w\) 的边后,得到的连通块集合为 \(S\),对于每条颜色为 \(w\) 的边 \((u,v)\),其贡献为 \(u\) 所在连通块大小 与 \(v\) 所在连通块大小的乘积

用线段树分治配合可撤销并查集,容易做到 \(O(n\log^2 n)\)

代码

参考

posted @ 2025-07-23 07:41  Hstry  阅读(3)  评论(0)    收藏  举报