2025.5.7 模拟赛
5.7 模拟赛
magnet
不错的签到题
注意到,初始能到的是外围一圈,每个磁铁能扩展一行一列,最终要求“连通地”填满。
经典的,对行列建二分图,每个磁铁对应行列连边,最终要求行点连通或列点连通。
离散化后直接并查集即可,每个连通块会对行点答案造成 \(-(szx-1)\) 的贡献,列点同理。
复杂度 \(O\big(k(\log k+\alpha(k))\big)\)。
array
有趣的 agc 题。
显然贪心的构造 \(A_i=i\left(\lfloor\frac{A_{i-1}}{i}\rfloor+1\right)\)。
记 \(B_i=\frac{A_i}{i}=\lfloor\frac{A_{i-1}}{i}\rfloor+1\),注意到 \(B_i\) 会很快趋近于相同,打表发现大概是 \(O(\sqrt x)\) 次之后。暴力做即可获得 \(55\) pts。
注意到 \(B_{i+1}=\frac{A_i}{i}=\lfloor\frac{A_{i-1}}{i}\rfloor+1=\lfloor\frac{iB_i}{i}\rfloor+1=B_i-\lceil\frac{B_i}{i+1}\rceil+1\),即 \(B_i-B_{i+1}=\lceil\frac{B_i}{i+1}\rceil -1\),则 \(B_i\) 单调不增。
考虑 \(B_i\) 有一个较宽松的上界:
因为 \(X\le 10^{18}\),我们希望得到一个 \(O(X^{\frac{1}{3}})\) 的算法。
注意到 \(B_i-B_{i+1}\) 形如若干连续段,考察连续段的数量:
- 对于 \(i\le X^{\frac{1}{3}}\),显然只有 \(X^{\frac{1}{3}}\) 种取值。
- 对于 \(i> X^{\frac{1}{3}}\),\(B_i-B_{i+1}=\lceil\frac{B_i}{i+1}\rceil -1 < \left\lceil\frac{\frac{X}{i}+i}{i+1}\right\rceil=O(X^{\frac{1}{3}})\),也只有 \(O(X^{\frac{1}{3}})\) 种取值。
所以我们可以对每个等差连续段分别计算。
现在问题在于,已知连续段的左端点,如何算出右端点。
极长右端点 \(r\) 就是最大的满足 \(B_l-B_{l+1}=B_{r-1}-B_r\) 的位置。
记 \(x=\lceil\frac{B_l}{l+1}\rceil\),则 \(x-1=\lceil\frac{B_{r-1}}{r}\rceil -1\)。
注意到中间有一步上取整转下取整,原因是形如 \(\lfloor\frac{A}{B}\rfloor \ge C\) 的才能去掉下取整符号,而上取整是不能去掉的。
等差连续段的和是容易的。对于多组询问,离线 \(\sum\limits_l^r a_i = s_r -s_{l-1}\),在跳等差段的过程中计算即可。
speedup
重要转化:
\(ans=\sum\limits_{type_i=2} t_i -\frac{1}{2}(C_a(C_a+1)+C_b(C_b+1))\)
这样每个位置就独立了。
部分分启示对 \(a,b,A,B\) 分类。
发现有两种是只有 \(O(n)\) 种选择,另两种是左右独立的。
于是预处理 \(g_i\) 表示“外面选 \(i\) 个的最大值”。
枚举计算答案,复杂度 \(O(n^2)\)

浙公网安备 33010602011771号