ARC126F Affine Sort

发布时间 2023-07-14 10:11:30作者: 275307894a

题面传送门

感觉这种带个极限的题目都非常奇怪。

首先三个变量不好做,设 \(g(k)\) 表示 \(c=k\) 的情况下 \(a,b\) 的值,那么我们要求的东西可以看成 \(\lim\limits_{K\to \infty} \frac{\int_{0}^{K}g(x)\,dx}{K^3}\)

模意义下的单调递增可以用 \(b\) 来调节,因此如果 \(\sum \limits_{i<n}{(X_{i+1}-X_i)a\bmod c}\leq c\),那么就有 \(c-\sum \limits_{i<n}{(X_{i+1}-X_i)a\bmod c}\)\(b\) 满足条件。因为 \(c\) 取了极限,所以可以将 \(a,b,c\) 都看成实数。那么问题变成了一个分段函数在 \(y=c\) 以下的负面积大小。

对于一个 \(i\),其会贡献 \(|X_{i+1}-X_i|\) 个分段点,是 \(+c\) 或者 \(-c\),取决于 \(X_{i+1}-X_i\) 的符号。因此总共的分段点个数不超过 \(2\sum X_i\leq 10^6\),可以接受。因此变成对 \(O(\sum X_i)\) 段一次函数进行积分,排序后扫一遍即可做到 \(O(S\log S)\),这样可以将 \(g(k)=ck^2\) 的系数 \(c\) 求出来。

最后积分也就是将 \(c\) 的系数乘上 \(\frac{1}{3}\) 就得到最后的极限值。

submission