计数/容斥乱做
计数/容斥乱做
容斥题可以手玩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\)种颜色就不再用了,我们对颜色种数而不是出现次数二项式反演。
二项式反演可得:
一遍NTT就做完了,这个要反着卷。预处理阶乘最好直接到maxn啊啊啊啊啊WA了好几回
付公主的背包
这种不能直接乘的可以取ln加起来,取完ln后的形式可以用泰勒展开分析,之前写过。
「SDOI2017」遗忘的集合
考虑知道S计算f就是上面的东西,考虑形式化表示这东西,设\(a_i\)表示S中有没有\(i\),则
那么把\(f\)取ln,枚举什么j可以产生贡献,可以得到
莫比乌斯反演即可得到\(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}\)
然后要用生成函数解递推式,考虑把分母乘到左边,
可以想象是后面都消掉了只剩前三项,那么可以得到第三项后的递推式\(g[i]=2*g[i-1]+g[i-2]\)
我们设前三项的系数是\(a,b,c\),那么有
解得
就可以矩阵快速幂了。
luoguP4705 玩游戏
这个题可以转化成数列k次方和,
考虑数列k次方和的答案的生成函数为:
这样己经可以分治 NTT 了,通分之后同时维护分子分母即可。
吐了,我再用vector写任何多项式算法立马吃屎