TCO2014 Frozen Standings 题解

题意

\(n\) 个人,每个人有一个 \(a_i\) 。你可以给若干个人的 \(a_i\) 加一。这些人按分数为第一关键字,编号为第二关键字排名。问能有多少种排名。

\(1\le n\le5\times10^5\)

题解

双关键字排序,考虑本来是 \((a_i,i)\) ,可以合并成 \(Xa_i+i\) 。且每个人有两种选择,那把这两个数设为 \(L_i\)\(R_i\)

直接设 \(f_i\) 为排序后前 \(i\) 个人方案数。

首先直接地有 \(f_i=2f_{i-1}\) ,考虑算重了那些东西:

无论取 \(L_i\) 还是 \(R_i\) ,对前面那些不交的 \([L_j,R_j]\) 都是不会改变顺序的。

而对于那些相交的 \([L_j,R_j]\) , 只要有一个为 \(R_j\) 时,这两种选法会改变排名的顺序。

考虑容斥,枚举相交中从小到大第一个选 \(R\) 的,减去其选 \(L\) 时的方案数即可,这些方案中是能保证没有能影响这个的决策的。

所以式子大概是长这样子的: \(f_i=2f_i-\sum_{R_j\in[L_i,R_i]}f_{L_{i-1}}\)

对于那个 \(L_{i-1}\) 只要找到对应的那个人即可。

时间复杂度 \(O(n)\)

感觉这题很高妙,正确性不是很好理解,不过这篇题解显然是在口胡。

posted @ 2021-11-05 09:41  shrtcl  阅读(77)  评论(0)    收藏  举报