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)\)

[M-SOLUTIONS F] Random Tournament

\(n\) 个人参加比赛,给定两两之间比赛的输赢关系。

比赛规则是,将 \(n\) 个人按照 \(1\)\(n\) 的顺序排列,每次可以挑相邻两人比赛,输的人离场。最后剩下的人是冠军。

求有多少个人可能成为冠军。

\(1\le n\le 2000\)

Solution

考虑朴素的区间 DP ,定义 \(f_{l,r,x}\) 表示只考虑区间 \([l,r]\) 的人,\(x\) 能否成为冠军。转移直接是 \(f_{l,r,x}=f_{l,x,x}\&f_{x,r,x}\)

注意转移下标的形式,因此定义 \(L_{l,r}\) 表示区间 \([l,r]\)\(l\) 能否成为冠军,\(R_{l,r}\) 同理。

考虑转移,结论是 \(L_{l,r}=\max\limits_{l<k\le r} \{a_{l,k}\&R_{l+1,k}\&L_{k,r}\}\) ,可以这样考虑:

假设 \(l\) 和一些位置比赛,不妨 \(pos_1,\cdots,pos_k\) ,我们随便拎个 \(pos_t,pos_{t+1}\) ,如果 \(pos_{t}\) 打败 \(pos_{t+1}\) ,则可以剔除 \(pos_{t+1}\) ;如果 \(pos_{t+1}\) 打败 \(pos_{t}\) ,则可以剔除 \(pos_t\)

也就是说如果 \(l\) 能成为冠军,一定存在一个策略,\(l\) 只和一个位置比赛。因此 DP 式子成立。用 bitset 优化 DP 即可。

时间复杂度 \(\mathcal O(\frac{n^3}{\omega})\)

posted @ 2021-09-21 23:45  wlzhouzhuan  阅读(265)  评论(0编辑  收藏  举报