ARC126F
Posted wlzhouzhuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ARC126F相关的知识,希望对你有一定的参考价值。
[ARC126F] Affine Sort
给定一个长为 \\(N\\) 的序列 \\(x\\) ,定义 \\(f(K)\\) 表示满足下述条件的 \\((a,b,c)\\) 个数:
- \\(1\\le c\\le K,0\\le a,b<c\\) ;
- \\((ax_i+b)\\bmod c\\) 递增
可以证明 \\(\\lim \\limits_{k\\to \\infty} \\frac{f(K)}{k^3}\\) 趋向一个定值,对 998244353 取模。
\\(2\\le N\\le 10^3,\\sum\\limits_{i=1}^{N}X_i\\le 5\\cdot 10^5\\) , \\(X_i\\) 两两不同。
Solution
我们记 \\(g(k)\\) 表示 \\(c=k\\) 的满足条件的 \\((a,b)\\) 对数,则:
引理1: \\(\\lim\\limits_{k\\to \\infty} \\frac{g(k)}{k^2}\\) 趋向一个定值 \\(C\\) 。
因此 \\(\\lim\\limits_{k\\to \\infty}\\frac{f(K)}{K^3}=\\lim\\limits_{K\\to \\infty} \\sum\\limits_{k=1}^{K} \\frac{g(k)}{K^3}=\\lim\\limits_{k\\to \\infty}\\sum\\limits_{k=1}^{K}\\frac{Ck^2}{K^3}=\\frac{C}{3}\\) 。
约定 \\(\\{x\\}\\) 表示 \\(x\\) 的小数部分,例如 \\(\\{-5.2\\}=0.8\\) 。于是我们将原条件转换为:\\(\\{\\frac{ax_i+b}{c}\\}\\) 单调递增。
因为 \\(k\\to \\infty\\) ,不难联想到定义点集 \\(D\\subset \\mathcal R^2\\) :\\(D=\\{(a,b)\\in [0,1]^2 | \\{ax_i+b\\} 单调递增 \\}\\) 。那么,\\(g(k)\\) 可以看做是满足 \\(0\\le a,b<k,(\\frac{a}{k},\\frac{b}{k}) \\in D\\) 的点的面积,即 \\(g(k)=\\text{area}(D)\\)。
将这些 \\(\\{ax_i\\}\\) 都画在一个单位圆上,它们需要逆时针排布。不难发现,这个 \\(\\{ax_i+b\\}\\) 单调递增的充要条件是:\\(\\sum\\limits_{i=1}^{n}\\{a(x_{i+1}-x_i)\\}=1\\) 。同时若 \\(a\\) 合法,满足条件的 \\(b\\) 个数为 \\(\\{a(x_1-x_n)\\}\\) 。
而对于每个 \\(i\\) ,\\(a\\) 只有在 \\(\\frac{*}{|x_{i+1}-x_i|}\\) 的时刻会出现断点(即小数部分 \\(±1\\) )。总共有 \\(\\sum\\limits_{i=1}^{n} |x_{i+1}-x_i|\\le \\sum\\limits_{i=1}^{n}(x_i+x_{i+1})=\\mathcal O(\\sum\\limits_{i=1}^{n}x_i)\\) 个断点。
因此将断点排序,相邻两断点间的 \\(\\sum\\limits_{i=1}^{n}\\{a(x_{i+1}-x_i)\\}\\) 是相同的,而区间内对 \\(\\text{area}(D)\\) 的贡献即为 \\(\\int_{l}^{r} \\{a(x_1-x_n)\\}\\) ,这是好求的(注意,是趋近于 \\(l,r\\) ,断点处的取值是忽略的,所以实现上有一些细节)。
时间复杂度 \\(\\mathcal O(\\sum x_i)\\) 。
以上是关于ARC126F的主要内容,如果未能解决你的问题,请参考以下文章
ARC工程使用不支持ARC的库以及非ARC工程使用ARC的库编译设置