字符串专题测试

T1:

  如果两个串相同,那么就是一个串的每一位和另一串相同,用并查集维护这种限制关系,最后并查集的联通块个数就是可以随意选字符的位置数$(26^{cnt})$。

  优化的并查集:倍增并查集。像维护线段树一样,对于每次合并$[l1,r1]$,$[l2,r2]$,拆分为$2^j$,合并倍增节点$(l1,j)$,$(l2,j)$。最终把每个大块下传给其包含的小块节点。总结点数$N*\log N$,总复杂度$O(N\log^2N)$。

T3:

  首先想乱选出$i$个集合的方案$g[i]=i^N$,其中不合法的就是有空集的方案。那么合法$f[i]=g[i]-\sum \limits_{j=1}^{i-1} g[j]*C_i^j $,这样得到的其实是$i$个集合的排列,最后还要分别除以$i!$求和。暴力是$O(N^2)$的。拆开式子$f[i]=i^N-\sum \limits_{j=1}^{i-1} \frac{g[j]}{j!} *i! * \frac{1}{(i-j)!}$,可以设$F[i]=\frac{i^N-f[i]}{i!}$,那么$F[i]=\sum \limits_{j=1}^{i-1} \frac{j^N-F[j]*j!}{j!} * \frac{1}{(i-j)!}$,就可以用分治fft解决了。

考前多项式这块欠的有点多,考场上也没有yy出来这个分治fft。这场考到2h的时候就很绝望了,T1发现打伪了就只有暴力,T3只会暴力,T2题目都没读懂。后面的时间一直想T1和T3,但是并没有什么进展。感觉当初学知识学得太慢了。

猜你喜欢

转载自www.cnblogs.com/Duan-Yue/p/12112406.html
今日推荐