计数/容斥乱做

计数/容斥乱做

容斥题可以手玩n比较小的情况,然后就大脑升级力,,,

「SHOI2015」超能粒子炮・改

考虑Lucas定理,直接按余数分下类就能递归了

「HAOI2017」方案数

容斥,考虑枚举第一个经过的障碍物,直接减就行了,就像容斥和莫比乌斯反演的关系一样,\(n^2\)就没必要求容斥系数。

「FJOI2017」矩阵填数

\(2^n\)容斥枚举哪些块是\(<v\),哪些块\(\leq v\),容斥系数即为\(-1^{小于v的块数}\)

具体实现可以离散化,n个矩形把矩阵分成了\(n^2\)个部分直接计算

「TJOI2019」唱、跳、rap 和篮球

容斥枚举\(abcd\)有多少个,我不会组合数,可以\(O(n^2)\)dp出来这一部分的方案数。然后计算把剩下的分配一下的方案数,就是四个EGF卷起来,还是比较简单的。(然而我最开始算的OGF调了半天)

「CTSC2017」吉夫特

\(a_{b_i}\) 必然是 \(a_{b_i-1}\) 二进制上的超集,分块,设 \(dp[x][y]\) 为前九位为 \(x\) ,后九位为 \(y\) 的子集的方案数,每次就只用枚举一半,随机\(a_i\)的情况下很快。

「LibreOJ NOI Round #2」不等关系

讲课讲的经典套路题,楼下细🔒。

先手玩小情况,考虑\(a>b>c<d\),它就等于\((a>b\ ?\ c<d)-(a\ ?\ b<c<d)+(a<b<c<d)\)

于是我们枚举变成\(<\)\(>\)有多少个,容斥系数很显然,最后用个分治NTT。

放树上也能做到\(n^2\),就是一个树背包,不过没法多项式。

CF838D

考虑加一个位置,然后最后每个位置有没有人都是等价的,所以用概率分析就做完了。

「HAOI2018」染色

最开始自己推的有一点小问题,原因是这题有两个恰好,要搞清楚对哪个恰好二项式反演

所以钦定了\(i\)种颜色之后这\(i\)种颜色就不再用了,我们对颜色种数而不是出现次数二项式反演。

\[g(i)={m\choose i}{n\choose is}\frac{(is)!}{\prod_is!}(m-i)^{n-is}=\sum_{j=i}^m {j\choose i}f(j) \]

二项式反演可得:

\[f(k)=\sum_{i=k}^m-1^{i-k}g(i){i\choose k} \]

一遍NTT就做完了,这个要反着卷。预处理阶乘最好直接到maxn啊啊啊啊啊WA了好几回

付公主的背包

这种不能直接乘的可以取ln加起来,取完ln后的形式可以用泰勒展开分析,之前写过。

「SDOI2017」遗忘的集合

考虑知道S计算f就是上面的东西,考虑形式化表示这东西,设\(a_i\)表示S中有没有\(i\),则

\[f=\prod_{i=1}^{n} \frac{1}{\left(1-x^{i}\right)^{a_{i}}}=\exp \left(\sum_{i=1}^{n} a_{i} \sum_{j=1}^{\infty} \frac{x^{i j}}{j}\right) \]

那么把\(f\)取ln,枚举什么j可以产生贡献,可以得到

\[f_i=\sum_{j|i}a_j\frac{j}{i}=\frac{1}{i}\sum_{j|i}a_jj \]

莫比乌斯反演即可得到\(a_i\),这题还要MTT求\(\ln\)恶心的很。

ODE

一直不擅长这个,就是expln的意义啥的

斐波那契

\(F(i)\) 表示第 \(i\) 个斐波那契数,给定 \(n\),考虑所有正整数序列 \({ai}\) 使得 \(a_1+a_2+…+a_m=n\),求所有方案下 \(F(a1)*F(a2)*…*F(am)\) 的和。

设斐波那契数列是\(f\),答案\(g=1+f+f^2+\cdots=\frac{1}{1-f}=\frac{1-x-x^2}{1-2x-x^2}\)

然后要用生成函数解递推式,考虑把分母乘到左边,

\[(1-2x-x^2)g=1-x-x^2 \]

可以想象是后面都消掉了只剩前三项,那么可以得到第三项后的递推式\(g[i]=2*g[i-1]+g[i-2]\)

我们设前三项的系数是\(a,b,c\),那么有

\[(1-2x-x^2)(a+bx+cx^2)=1-x-x^2 \\a=1 \\b-2a=-1\\ -a-2b+c=-1 \]

解得

\[a=1,b=1,c=2 \]

就可以矩阵快速幂了。

luoguP4705 玩游戏

这个题可以转化成数列k次方和,

考虑数列k次方和的答案的生成函数为:

\[\sum_{i=0}^{\infty} x^{i} \sum_{j=1}^{n} a_{j}^{i}=\sum_{j=1}^{n} \frac{1}{1-x a_{j}} \]

这样己经可以分治 NTT 了,通分之后同时维护分子分母即可。

吐了,我再用vector写任何多项式算法立马吃屎

posted @ 2021-01-26 14:22  lcyfrog  阅读(68)  评论(0编辑  收藏