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\) 有一个较宽松的上界:

\[\because A_i\le X+\sum\limits_{j=2}^i j=X-1+\frac{(i+1)i}{2}<X+i^2 \]

\[\therefore B_i=\frac {A_i}{i}<\frac{X}{i}+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\)

\[\begin{aligned} \because x&= \left\lceil\dfrac{B_l-(r-l-1)(x-1)}{r}\right\rceil\\ &=\left\lceil\dfrac{B_l+(l+1)(x-1)}{r}\right\rceil -(x-1)\\ &=\left\lfloor\dfrac{B_l+(l+1)(x-1)-1}{r}\right\rfloor-x+2 \end{aligned} \]

\[\therefore r=\left\lfloor\dfrac{B_l+(l+1)(x-1)-1}{2x-2}\right\rfloor \]

注意到中间有一步上取整转下取整,原因是形如 \(\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)\)

posted @ 2025-05-08 17:26  Cindy_Li  阅读(26)  评论(0)    收藏  举报