【SDOI2017】套路总结

1

第一题是裸的反演;

\[\begin{align} Ans&=\prod_{i=1}^n\prod_{j=1}^ma[(i,j)]\\ &=\prod_{d=1}^na[d]^{f(d)}\\ f(d)&=\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\lfloor\frac{n}{id}\rfloor\lfloor\frac{m}{id}\rfloor\mu(i) \end{align}\]

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

\[\begin{align} Ans&=\prod_{k=1}^n\sum_{d|k}a[d]^{\lfloor\frac{n}{k}\rfloor\lfloor\frac{m}{k}\rfloor\mu(\frac{k}{d})}\\ &=\prod_{k=1}^n(\sum_{d|k}a[d]^{\mu(\frac{k}{d})})^{\lfloor\frac{n}{k}\rfloor\lfloor\frac{m}{k}\rfloor} \end{align}\]

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

2

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

3

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

posted @ 2017-04-23 10:20  hiweibolu  阅读(590)  评论(0编辑  收藏  举报