Day 12.1模拟赛游记
模拟赛之难,难如上青天!
T1.Catalan
题目大意:求\(n\)个数的序列通过进栈出栈操作后的排列数,其中有\(m\)条约定形如\(x_i\)必须在\(y_i\)后出栈。
想想\(Catalan\)数的递推公式:\(C_n=\sum_{i=0}^{n-1}C_i\times C_{n-i-1}\)。即对于\(n\)个数,枚举最后出栈的数,因为\(i\)为最后一个出栈的数,所以\(1\sim i-1\)的数都已经出栈了,而\(i\)进栈到出栈的序列中又是\(i+1\sim n\)的序列,所以以\(i\)为分界点,两边的方案数相乘即为总方案数。而对于这题,即添加了一些限制,使得某些数不能作为最后出栈的数,比如对于\(x_i\)必须在\(y_i\)之后出栈,那么\(y_i\)就不能作为最后的出栈数。因此,把一个数两边分别作为\(x\)轴和\(y\)轴,那么对于一个限制,就是在这个平面上出现了一些点不能取,用前缀和即可。
T2.team
题目大意:求\(L\sim R\)区间内无重复数字子区间的数量,有修改:将\(a_x\)改为\(y\)。
有一个经典的套路,对于每一个数,用\(net_i\)表示第\(i\)个数后面第一个与它数值相等的数的下标。对于一个无重复数字的区间,一定要满足\(\min_{i=l}^r\{net_i\}>r\),因此对于一个\(L\sim R\)的区间,答案就为\(\sum_{l=L}^R min(\min_{i-l}^R\{net_i\},R-1)-L\)。用线段树维护即可。
T3.math
题目大意:给定\(n,m\),求
\[\sum_{i=1}^n\sum_{j=1}^m gcd^n(i,j)\sum_{k=1}^{ij}[i\perp k][j\perp k]*k
\]