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)\) 。
感觉这题很高妙,正确性不是很好理解,不过这篇题解显然是在口胡。

浙公网安备 33010602011771号