【SDOI2017】套路总结

1

第一题是裸的反演;

[egin{align} Ans&=prod_{i=1}^nprod_{j=1}^ma[(i,j)]\ &=prod_{d=1}^na[d]^{f(d)}\ f(d)&=sum_{i=1}^{lfloorfrac{n}{d} floor}lfloorfrac{n}{id} floorlfloorfrac{m}{id} floormu(i) end{align}]

考虑更换为枚举(i*d)
那么就有,

[egin{align} Ans&=prod_{k=1}^nsum_{d|k}a[d]^{lfloorfrac{n}{k} floorlfloorfrac{m}{k} floormu(frac{k}{d})}\ &=prod_{k=1}^n(sum_{d|k}a[d]^{mu(frac{k}{d})})^{lfloorfrac{n}{k} floorlfloorfrac{m}{k} floor} end{align}]

显然,我们可以预处理((sum_{d|k}a[d]^{mu(frac{k}{d})})),于是就能分块做了。

2

如果一个结点与其父亲颜色不同,就给他打上标记1。

3

至少存在一个=存在=所有-不存在;
我们用dp来进行序列计数,(f[i][j])表示前i个数的前缀和%p的值为j的方案数。
显然可以矩阵乘法。

原文地址:https://www.cnblogs.com/hiweibolu/p/6751764.html