做题记录 25.10.19
\(\textcolor{blue}\odot\) P14154 [ICPC 2022 Nanjing R] 索道 \(\quad\) QOJ #5415. Ropeway
令 \(f_i\) 表示 \([0,i]\) 中强制选择 \(i\) 的情况下的答案,\(g_i\) 表示 \([i,n+1]\) 中强制选择 \(i\) 的情况下的答案,两者容易单调队列 \(O(n)\) 求出
对于修改 \((p,v)\),若 \(p\) 必选则答案为 \(f_{n+1}-a_p+v\),否则令 \(pr_p,sf_p\) 为 \(p\) 前一个与后一个必选位置,答案为 \(\min(\min f_{\max(pr_p,p-k)\sim p-1}+v+\min g_{p+1\sim \min(sf_p,p+k)},\min_{\max(pr_p,p-k)\le x\le p-1}\min_{p+1\le y\le \min(sf_p,p+k),y-x\le k}(f_x+g_y))\),容易做到 \(O(k)\)
总时间复杂度 \(O(n+qk)\)
\(\textcolor{purple}\odot\) P11802 【MX-X9-T6】『GROI-R3』Graph
先考虑如何判定给定的 \(\{P\}\) 是否合法
定理:一个长度为 \(p\) 的置换的 \(c\) 次方得到 \(\gcd(p,c)\) 个长度为 \(\frac n{\gcd(p,c)}\) 的环
对于环长 \(i\),考虑什么样的数量 \(j\) 使得存在 \(l\) 令 \(\frac l{\gcd(l,c)}=i\) 且 \(\gcd(l,c)\mid j\),即当长度为 \(i\) 的环数量为 \(j\) 时,在 \(c\) 次变换下,它们可以拼为若干更大的环
定理:\(j\) 合法当且仅当 \(p\mid j\),其中 \(p\) 为满足 \(\frac l{\gcd(l,c)}=i\) 的 \(\gcd(l,c)\) 的最小值,即满足 \(p=\gcd(p\cdot i,c)\) 的最小值
证明:
- 对于合法的 \(p\),\(p=\gcd(p\cdot i,c)\iff p\mid c\land \gcd(i,\frac cp)=1\)
- 设 \(p\) 分解为 \(\prod {Pr_i}^{\alpha_i}\),其中 \(Pr_i\) 为第 \(i\) 个质数,设 \(i\) 分解为 \(\beta\),\(c\) 分解为 \(\gamma\)
- 则上述条件等价于 \(\forall i\),有 \(\alpha_i\le \gamma_i\) 且 \(\min(\beta_i,\gamma_i-\alpha_i)=0\)
- 若 \(\beta_i=0\) 则 \(\alpha_i\le \gamma_i\),否则 \(\alpha_i=\gamma_i\)
- 假如 \(q\) 也合法,其分解为 \(\alpha'\),取 \(r=\gcd(p,q)\),其分解为 \(\alpha^\ast_i=\min(\alpha_i,\alpha'_i)\),显然同样满足条件
- 因此对于合法的 \(p,q\),\(\gcd(p,q)\) 一定合法
- 由此易证原命题成立
预处理 \(p_i\),表示对于确定的 \(i\),合法的 \(p\) 的最小值,这部分时间复杂度为 \(O(nc\log n)\)
设 \(\{P\}\) 中长度为 \(i\) 的环的数量为 \(r_i\),则要求每个 \(r_i\) 都能表示为若干 \(p_l\) 的倍数之和,其中 \(l\) 为 \(i\) 的倍数,显然等价于 \(r_i\) 为 \(p_i\) 的倍数
因此 \(\{P\}\) 合法当且仅当 \(\forall i,p_i\mid r_i\)
然后考虑题目给定的不完整排列
求出 \(l_i,r_i,m\) 表示长度为 \(i\) 的链数,长度为 \(i\) 的环数,孤点数
需要将 \(l_i\) 和 \(m\) 组合为若干环,使得最终的 \(r_i\) 为 \(p_i\) 的倍数,显然根据题目的限制,一个环只能由一条链加若干孤点,或完全由孤点组成,令最终的 \(r\) 为 \(r^\ast\)
令 \(f_{i,j,k}\) 表示确定了 \(r^\ast_{1\sim i}\),目前有 \(j\) 条长度为 \(i\) 的链(可能由之前若干链和孤点拼接),剩余 \(k\) 个孤点的方案数
初始 \(f_{0,0,m}\gets 1\),答案为 \(f_{n,0,0}\),考虑转移
从 \(f_{i-1,j,k}\) 到 \(f_{i,\ast,\ast}\),转移分为两步
先将 \(j\) 条长度为 \(i-1\) 的链增长至 \(i\),并加入长度为 \(i\) 的 \(l_i\) 条链,转移为 \(g_{j+l_i,k-j}\gets f_{i-1,j,k}\cdot P_k^j\)(加入的点接在链末尾,因为是环,不用考虑接在头部的情况)
然后将这 \(i\) 条链和若干孤点组合为长度为 \(i\) 的环,枚举链组成 \(J\) 个环,孤点组成 \(K\) 个环,转移为
其中 \(\frac{A_k^{Ki}}{i^KK!}\) 为 \(Ki\) 个点组成 \(K\) 个长度为 \(i\) 的环的方案数,\(i^K\) 为每个环循环同构的系数,\(K!\) 为环之间顺序的系数
暴力实现复杂度为 \(O(\sum_{i=1}^n \frac mi \cdot \frac ni\cdot \frac ni\cdot m)=O(n^4\sum_{i=1}^n \frac 1{i^3})=O(n^4)\)
考虑优化最后的转移
枚举 \(x\in [0,p_i)\),考虑所有 \(J\equiv x\pmod{p_i}\) 的转移
令 \(h_{j-J,k}\gets g_{i,k}\binom jJ\),则
时间复杂度 \(O(n^3)\),常数极小,可过
\(\textcolor{blue}\odot\) P14015 [ICPC 2024 Nanjing R] 生日礼物
若不存在 \(2\),令奇数位异或上 \(1\),则每次操作删除相邻的 \(01\),答案为 \(0\) 和 \(1\) 的数量之差,尽量用 \(2\) 抵消掉两者之差即可,时间复杂度 \(O(\sum |s_i|)\)
\(\textcolor{blue}\odot\) P13968 [VKOSHP 2024] Classics
通过平衡树求出每个数在最终序列中的位置
令 \(f_i\) 表示目前为止 \([1,i]\) 内 \(\text{LIS}\),加入位置 \(p\) 时令 \(f_p\gets \max f_{1\sim p-1}+1\)
时间复杂度 \(O(n\log n)\)

浙公网安备 33010602011771号