做题记录 26.2.23
\(\textcolor{black}\odot\) CF1750G Doping
为了保证字典序的条件,考虑枚举 \(1\le i\le n\) 和 \(1\le p'_i<p_i\)(且 \(p'_i\) 在 \(p_{1\sim i-1}\) 中没有出现过),假定 \(p'_{1\sim i-1}=p_{1\sim i-1}\),\(p'_{1\sim i}\) 确定,\(p'_{i+1\sim n}\) 为 \(p_{i+1\sim n}\) 的排列
显然最小划分数等于 \(n\) 减去 \(p'_i+1=p'_{i+1}\) 的 \(1\le i<n\)(称为上升组)的数量,因此考虑后者即可
令 \(j\) 表示 \(p'_{1\sim i}\) 中上升组的数量,\(k\) 为 \(\{p'_{i+1\sim n}\}\) 中相距为 \(1\) 的无序数对数量,\(t\in \{0,1\}\) 表示 \(p'_i+1\) 是否在 \(\{p'_{i+1\sim n}\}\) 中,三者容易快速维护,显然任意状态可以由 \((i,j,k,l)\) 唯一确定贡献
显然对于一个 \(i\),\(j,k,l\) 的取值范围都是 \(O(1)\) 的,由此本质不同的 \((i,j,k,l)\) 数量为 \(O(n)\) 的,分别考虑它们对答案的贡献,通过二项式反演容易单组 \(O(n^2)\),考虑进一步优化
发现每组 \((i,j,k,l)\) 可以转化为 \((g_{0\sim a},b)\),对答案的贡献为 \(rs_{b+x}\gets \sum_y (-1)^{y-x}\binom yx g_y\),且瓶颈在于从 \(g\) 贡献到 \(rs\) 的过程
考虑将 \(rs_{b+x}\) 视为平面上的点 \((b+x,b+x)\),\(g_y\) 视为 \((b+y,b)\),从 \(g_y\) 出发每次第一维坐标减一或第二维加一,对于前者需要乘以系数 \(-1\),则 \((-1)^{y-x} \binom yx\) 即为所有可能的路径的系数之和
将所有 \(g\) 累加到平面上,最后统一进行 \(dp\) 即可
时间复杂度 \(O(n^2)\)
\(\textcolor{black}\odot\) AT_agc068_e [AGC068E] Sort and Match
将 \(A^T\) 视为邻接矩阵,即 \(y\to x\) 边权为 \(A_{x,y}\)
对于序列 \(x_{1\sim m}\) 和其排序后的结果 \(y_{1\sim m}\),令 \(y_i\) 连向 \(x_i\),按 \(i\) 的大小为一个点所有出边确定顺序,显然得到的图每个连通块都是欧拉图
对于给定的图,按编号从小到大考虑每个点,按顺序依次取其出边,得到序列 \(x\)
由此两者可以构成双射
令 \(f_{i,j,k}\) 表示长度为 \(j\) 的环,编号最小的点为 \(i\),最后一条边为 \(k\to i\),且恰好经过点 \(i\) 一次的权值和,令 \(f_{i,j,0}=\sum_k f_{i,j,k}\),容易做到 \(O(n^3m)\)
令 \(h_{i,j}\) 表示取若干个环并为一张欧拉图(不要求连通),总长为 \(i\) 且经过的编号最小的点为 \(j\),环根据环上最小点划分等价类,不同等价类之间的环不区分顺序,每次枚举最后一个环,可以做到 \(O(nm^2)\)
由 \(h\) 和 \(f\) 容易统计答案
总时间复杂度 \(O(n^3m+nm^2)\)
\(\textcolor{black}\odot\) AT_mujin_pc_2017_d Oriented Tree
令直径为 \(l\),则最小值为 \(\lceil\frac l2\rceil\),构造方法为黑白染色后白点指向黑点
先考虑直径为偶数的情况,此时令中点为 \(M\),以 \(M\) 为根,令半径为 \(d_{\max}\),则需要所有 \(u,v\) 都满足 \(d(u,v)\le d_{\max}\)
令 \(g_u=d(u,M)-d(M,u)\)
深度最大的点至少有两个,设分别为 \(p,q\),则 \(dep_p=dep_q=d_{\max}\),从而 \(d(p,q)+d(q,p)=dep_p+dep_q=2d_{\max}\),显然 \(d(p,q)=d(q,p)=d_{\max}\),即
即最深层所有点 \(g\) 相同,设其值为 \(g_D\),显然 \(g_M=0\),不妨令所有 \(g\) 都加上 \(-g_D\),则最深层的 \(g\) 都是 \(0\),显然这样操作答案不变
从最深层向上,每跳一次父亲,\(d(u,M)\) 和 \(d(M,u)\) 中至多一个变化 \(1\),\(|g_u|\) 增加不超过 \(1\),从而有
对于一组 \(g_{1\sim n}\),显然可以唯一确定 \(d(\ast,M)\) 和 \(d(M,\ast)\),从而唯一确定定向方式
若保证 \(|g_u-g_{fa_u}|\le 1\) 且满足不等式限制,则算出来的 \(d(\ast,M)\) 和 \(d(M,\ast)\) 父亲和儿子的差也不超过 \(1\) 且取值合法,从而对应一种定向方式
转化为求:最深层 \(g=0\),之后每一层父亲和儿子的取值差不超过 \(1\),且每个 \(g\) 都在一定范围内,满足要求的 \(g_{1\sim n}\) 的数量
令 \(f_{u,i}\) 表示子树 \(u\) 中 \(g_u=i\) 的方案数,容易做到 \(O(nl)\)
对于直径为奇数的情况,需要通过容斥拆分为四个形式类似的问题
时间复杂度 \(O(n^2)\)
\(\textcolor{black}\odot\) P14385 [JOISC 2017] 门票安排 / Arranging Tickets
题目等价于:\([1,n]\) 内给定 \(m\) 组区间 \((l,r,c)\) 表示有 \(c\) 个 \([l,r)\),可以选择一个子集翻转(\([l,r)\to [1,l)\cup[r,n]\)),最小化最终每个点被覆盖次数的最大值
令 \(p_i\) 表示不翻转时 \(i\) 被覆盖的次数,\(U\) 表示总计 \(\sum c_i\) 个区间的可重集
对于一种方案,令 \(S\subseteq U\) 为被翻转集合
显然答案具有单调性,下界为 \(1\),上界为 \(\max p_i\),二分答案 \(x\)
先特判 \(S=\varnothing\) 的情况,以下假定 \(S\ne\varnothing\)
定理 \(1\):最优解中 \(\bigcap_{[l,r)\in S}[l,r)\ne\varnothing\)
证明:若存在 \([l,r)\in S,[L,R)\in S\) 使得 \(r\le L\),则 \(S/\{[l,r),[L,R)\}\) 一定更优
即对于最优解,一定存在 \(1\le t\le n\) 使得 \(\forall [l,r)\in S,l\le t<r\)
令 \(q(S)\) 表示翻转子集 \(S\) 后的 \(p\),令 \(z(S)\) 表示仅考虑子集 \(S\) 的 \(p\)
显然 \(q(S)_i=(p_i-z(S)_i)+(|S|-z(S)_i)=p_i+|S|-2z(S)_i=p_i+z(S)_t-2z(S)_i\),由于要使得 \(\forall i,q(S)_i\le x\),等价于 \(z(S)_i\ge \left\lceil \frac{p_i+z(S)_t-x}2\right\rceil\)
考虑枚举 \(z(S)_t\),则可以求出每个 \(z(S)_i\) 的下界 \(L(S)_i=\left\lceil \frac{p_i+z(S)_t-x}2\right\rceil\)(为了保证 \(\forall i,L(S)_i\le z(S)_t\),需要在 \([\max p_i-x,\max p_i]\) 中枚举 \(z(S)_t\))
显然 \(z(S)_{1\sim t}\) 单调不降,\(z(S)_{t+1\sim n}\) 单调不升,考虑将 \((l,r,c)\) 保存在左端点上,保留 \(l\le t<r\) 的,枚举 \(1\le i\le t\),没有满足要求之前优先选择 \(r\) 最大的,贪心地满足左侧要求,然后检查右侧即可,堆优化可以做到 \(O((n+m)\log m)\)
令 \(V=\max p\),二分答案时间复杂度 \(O(\log V)\),枚举 \(t\) 和 \(z(S)_t\) 时间复杂度 \(O(nV)\),单次检查 \(O((n+m)\log m)\),由此得到 \(O(nV(n+m)\log M\log V)\) 的算法
对于 \(S\),令 \(I(S)=\bigcap_{[l,r)\in S}[l,r)\)
定理 \(2\):最优解中 \(\max_{i\in I(S)}q(S)_i\ge \max q(S)-1\)
证明:
- 假定命题不成立,则 \(\max_{i\in I(S)}q(S)_i\le \max q(S)-2\)
- 首先考虑证明此时不存在 \([l,r)\in S\) 使得 \(I(S)=[l,r)\)
- 若存在这样的区间,令 \(S'=S/\{[l,r)\}\)
- 则 \(\forall t\notin [l,r),q(S')_t=q(S)_t-1\),\(\forall t\in [l,r),q(S')_t=q(S)_t+1\)
- 令 \(x=\argmax q(S)\),显然 \(x\notin[l,r)\),从而 \(q(S')_x=q(S)_x-1\)
- 为了保证 \(S\) 不劣于 \(S'\),需要满足 \(\max q(S')\ge q(S)_x\)
- 从而 \(\argmax q(S')\in[l,r)\),有 \(\max q(S')=\max_{t\in [l,r)} q(S)_t+1\ge q(S)_x=\max q(S)\),即 \(\max_{t\in I(S)}q(S)_t+1\ge \max q(S)\),与假设矛盾
- 由此设 \(I(S)=[l,r)\),则一定存在 \([L,r)\in S,[l,R)\in S\),且 \(L< l,r< R\)
- 考虑以下调整算法:
- 若 \(|S|\le 1\) 或已经满足 \(\max_{i\in I(S)}q(S)_i\ge \max q(S)-1\) 则结束
- 否则通过以上方式可以选出 \([L,r)\) 和 \([l,R)\),将两者删去
- 显然影响为 \([l,r)\) 的 \(q\) 加 \(2\),\([1,L)\cup [R,n]\) 的 \(q\) 减 \(2\)
- 而此时 \(\max_{i\in I(S)}q(S)_i\le \max q(S)-2\),因此 \(\max q(S)\) 不增,方案不劣
- 算法结束后要么 \(\max_{i\in I(S)}q(S)_i\ge \max q(S)-1\),要么 \(|S|\le 1\)
- 而 \(|S|\le 1\) 时显然前者也成立
- 两种情况都和假设矛盾,因此假设不成立,原命题成立
从而只需要枚举 \(z(S)_t\in\{\max p-x,\max p-x+1\}\) 即可,时间复杂度降到 \(O(n(n+m)\log M\log V)\)
定理 \(3\):存在一组最优解满足 \(p_t=\max p\)
证明:
- 令 \(t=\argmax_{i\in I(S)} q(S)_i\)
- 根据定理 \(2\),存在最优方案 \(S\) 使得 \(q(S)_t\ge \max q(S)-1\)
- 假定命题不成立,则存在 \(S\) 同时满足 \(p_t\le \max p-1\)
- 令 \(x=\argmax p\),则 \(x\notin I(S)\),从而 \(z(S)_x\le z(S)_t-1\)
- 满足:\(p_x\ge p_t+1\),\(z(S)_x\le z(S)_t-1\),而 \(q(S)_x=p_x-2z(S)_x+z(S)_t\),\(q(S)_t=p_t-z(S)_t\)
- 代换可得 \(q(S)_x\ge q(S)_t+3\),与前提矛盾
- 从而假设不成立,原命题成立
由此只需要枚举 \(t\mid p_t=\max p\)
定理 \(4\):若存在一组最优解满足 \(p_t=\max p\),则 \(\{x\mid p_x=\max p\}\subseteq I(S)\)
证明:
- 令 \(t=\argmax_{i\in I(S)} q(S)_i\)
- 根据定理 \(2\),存在最优方案 \(S\) 使得 \(q(S)_t\ge \max q(S)-1\)
- 假定命题不成立,则存在 \(S\) 同时满足存在 \(x\notin I(S),p_x= \max p\)
- 有 \(p_x=p_t\),\(z(S)_x\le z(S)_t-1\)
- 代换可得 \(q(S)_x\ge q(S)_t+2\),与前提矛盾
- 从而假设不成立,原命题成立
由此只需要任取 \(t=\argmax p\) 检测即可,时间复杂度 \(O((n+m)\log M\log V)\)

浙公网安备 33010602011771号