长度为 的序列 ,计算 ,其中
第一个条件用 解决,但是第二个条件就有点难办了。
注意到只有 时 。
那么可以考虑占掉 的位置。
令 , 同理。
令 。
如此, 所得到的 中,每一个 都是正确的,因为 相当于两个数拼在一起的长度, 就是他们的并。
最后的答案就是 。时间是 的。
WTY AK IOI
长度为 2n 的序列 a,b,计算 c,其中
ck=i ∣ j=ki & j=0∑aibj
第一个条件用 FWT 解决,但是第二个条件就有点难办了。
注意到只有 ∣i∣+∣j∣=i or j 时 i & j=0。
那么可以考虑占掉 0 的位置。
令 Fi,j={aj0∣j∣=iotherwise,Gi,j 同理。
令 Hi=j=0∑iFj∗Gi−j。
如此,F∗G 所得到的 H 中,每一个 H∣S∣,S 都是正确的,因为 ∣S∣ 相当于两个数拼在一起的长度,S 就是他们的并。
最后的答案就是 ansi=H∣i∣,i。时间是 O(nlog2n) 的。
扫码打赏,你说多少就多少