T1:(f[i]=sum_{j=1}^{i}(a[i]==1)f[i-a[i]])
a[i]表示是否存在第i种质量的氨基酸。
设生成函数(f=sum_{i=1}^{n}f[i]),(h=sum_{i=1}^{n}a[i])
则(f=1+f*h)
(f*(1-h)=1)
(f=frac{1}{1-h})
多项式求逆即可。
T2:仍然是NTT
先(2^m)跑出把A平移1~n所花费的最小代价。
然后其中一个序列翻转,于是化成了卷积的形式,容易求出对应相同的有多少个。
再判断一下就好了。
T3:反演的题。
公式太多不想写了