20190424NOI.AC省选模拟

本文探讨了一道涉及快速傅立叶变换(FFT)的算法题目,通过数学反演和枚举技巧优化计算复杂度。同时,分析了一个组合数学问题,关于序列构造与计数的高效求解策略。

A

在这里插入图片描述
怎么是个FFT裸题啊…
直接通配符匹配的套路玩起来就好了吧…

*B

在这里插入图片描述
上午做题怎么都这么迷糊…
首先式子可以变成这个
∑dd∑i∑j[i∗j∗d2≤n][gcd(i,j)=1]\sum_d d\sum_i \sum_j[i*j*d^2\leq n][gcd(i,j)=1]ddij[ijd2n][gcd(i,j)=1]
反演一手
∑dd∑kμ(k)∑i⌊nd2k2i⌋\sum_dd\sum_k\mu(k)\sum_i\lfloor\frac{n}{d^2k^2i}\rfloorddkμ(k)id2k2in
这时候101310^{13}10133e83e83e8左右…考虑枚举dkdkdk
∑T∑i⌊nT2i⌋∑d∣Tμ(d)TD\sum_T \sum_{i}\lfloor\frac{n}{T^2i}\rfloor\sum_{d|T}\mu(d)\frac{T}{D}TiT2indTμ(d)DT
其实μ\muμididid就是ϕ\phiϕ,那么后面写成ϕ\phiϕ就可以了
∑T∑i⌊nT2i⌋ϕ(T)\sum_T\sum_{i}\lfloor\frac{n}{T^2i}\rfloor\phi(T)TiT2inϕ(T)
前一维只有(n)\sqrt(n)(n)
后面枚举的量也很少…似乎这样就可以过了
自己sb,感觉枚举乘积不能过就没想了

C

在这里插入图片描述
考虑往一个空序列里加数,如果iii位置加上了数字jjj,那么jjj位置也要加上数字iii
这样出来的序列就是对合的
然后考虑怎么弄数,我们可以枚举下标在[1,k][1,k][1,k]中存在多少个BBB中的数,显然是一段前缀。并且如果能填进去,方案是唯一的。因为能填的下标与个数相同,还要保证顺序
如果能填进去,不妨设BBB序列剩下了xxx个数,AAA序列还剩下n−kn-knk个数可以填,先放BBB序列的话就是Cn−kxC_{n-k}^{x}Cnkx,这样AAA序列还有n−k−xn-k-xnkx个位置需要互相放数,此时是独立的,直接预处理一个f[i]f[i]f[i]表示长度为iii的序列互相放有多少种方案
显然转移是f[i]=f[i−1]+f[i−2]∗(n−1)f[i]=f[i-1]+f[i-2]*(n-1)f[i]=f[i1]+f[i2](n1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值