*【HT-066-Rainbow】核桃彩虹周赛
核桃OJ。
A
语法题,直接模拟即可。
B
只要两端不同就删去,留下来的长度即为答案。
C
把贡献放到第一次出现的位置上,设 \(lst_i\) 为上一个 \(=a_i\) 的位置(没有则为 \(0\)),则答案为 \(\sum a_i(n-i+1)(i-lst_i)\)。
D
SG 函数模板题,不会的可以去学一下。
E
直接枚举第一个改变的位,后面的位都可以任意调整,按位贪心即可。
G
特判 \(k=0\),令 \(X=\frac{x}{x+1}\)。
考虑 \(t^k\) 的组合意义:\(t\) 个人 \(k\) 轮每轮找一个人,找出来的人的序列的方案数。
不难发现对于序列 \(a_1,\dots,a_k\),其对答案的贡献是 \(X^c(1+X(n-\max a_i))\),其中 \(c\) 表示 \(a\) 的颜色数。
考虑枚举 \(c\),设 \(C_i\) 为将 \(k\) 个人分到 \(i\) 个班且每个班都有人的方案数,注意到 \(\sum_a (n-\max a_i+1)=C_c\sum_{i=c}^{n}\binom{i}{c}=C_c\binom{n+1}{c+1},\sum_a 1=C_c\binom{n}{c}\),问题变为求 \(C\)。
考虑容斥,有 \(C_i=\sum_{j=0}^{i-1}(-1)^j\binom{i}{j}(i-j)^k=i!\sum_{j=0}^{i-1}\frac{(-1)^j(i-j)^k}{j!(i-j)!}\)。
于是设 \(A_i=\frac{(-1)^i}{i!},B_i=\frac{i^k}{i!}\),则 \(C_i=i!\sum_{x+y=i}A_xB_y\),ntt 即可。
后来想了一下发现所有二项式反演都能用类似方式优化啊,为什么没人告诉我???

浙公网安备 33010602011771号