数学

因为没做过数学题。
所以打算先随便找+做几个简单数学题,再写题解,过段时间再讲。

另:由于我之前讲的数学题难度太大,被多人联名怒喷,广受差评,所以这次的难度大大降低,题太水。
做过的大佬不要大声喷或喊题解,没做过的神秒切不要说题真太水。

本来计划弄10个题,由于本人水平有限,这段时间内过于颓废,所以只做了8个题。

\(T1\)
\(CF438E\ The\ Child\ and\ Binary\ Tree\)
有一个大小为\(n\)的集合\(S\)问所有点权都在集合中,并且点权之和分别为\([1,m]\)的二叉树的个数。
\(n,m<=10^5\)

\(f(i)\)为权值和\(i\)的二叉树个数,\(c(i)\)为权值集合中是否存在\(i\)
那么有:

\[f(n)=\sum\limits_{i=1}^{m}c(i)\sum\limits_{j=0}^{n-i}f(j)f(n-i-j) \]

由于\(f(0)=1\)
\(\{f\},\{c\}\)生成函数分别是\(F(x),C(x)\)
所以:

\[F(x)=F(x)F(x)C(x)+1 \]

解得:

\[F(x)=\frac{2}{1(+/-)\sqrt{1-4C(x)}} \]

然后考虑符号变化。
\(\lim\limits_{x\rightarrow 0}\)的时候,\(F(x)\rightarrow f(0)\)
那么当符号是正好的时候才存在这个结果,所以舍去负号。
那么我们做一个多项式开根和求逆就好了。

\(T2\)
UOJ#62 [UR #5] 怎样跑得更快

\(nq\leq 10^5\)

其实这个题就是猛推式子。

\[\begin{aligned} b_i&\equiv \sum\limits_{j=1}^{n}(i,j)^c[i,j]^ex_j\\ &\equiv \sum\limits_{j=1}^{n}(i,j)^{c-e}i^ej^ex_j\\ &\equiv i^e\sum\limits_{d|i}d^{c-e}\sum\limits_{d|j}j^ex_j[\frac{(i,j)}{d}=1]\\ &\equiv i^e\sum\limits_{d|i}d^{c-e}\sum\limits_{d|j}j^ex_j\sum\limits_{g|\frac{(i,j)}{d}}\mu(g)\\ &\equiv i^e\sum\limits_{d|i}d^{c-e}\sum\limits_{d|j}j^ex_j\sum\limits_{T|(i,j)}\mu(\frac{T}{d})\\ &\equiv i^e\sum\limits_{T|i}\sum\limits_{T|j}j^ex_j\sum\limits_{d|T}\mu(\frac{T}{d})d^{c-e}\\ &\equiv i^e\sum\limits_{T|i}\sum\limits_{T|j}j^ex_jf(T)\\ &\equiv i^e\sum\limits_{T|i}f(T)g(T)\\ &\equiv i^e\sum\limits_{T|i}F(T)\\ \frac{b_i}{i^e}&\equiv \sum\limits_{T|i}F(T)\\ F(n)&\equiv \sum\limits_{n|i}\mu(\frac{i}{n})\frac{b_i}{i^e} \end{aligned} \]

这就完事了。
一个反演解决了。

\(T3\)
UOJ#310. 【UNR #2】黎明前的巧克力

\(n\leq 10^6,a_i\leq 10^6\)

这个题可以直接转化题意。
变成对于一个可重集合\(S\),选择其\(xor\)和为\(0\)的子集\(T\),那么这个子集对答案的贡献就是\(2^{|T|}\)
那么我们可以搞一个集合幂级数二项式来当生成函数用。
那么每个元素的生成函数就是\((1+2x^{a_i})\)
每个都\(FWT\)一次复杂度太高了。
考虑\(FWT\)的式子。
\(i\)的二进制位上\(1\)的个数为\(d(i)\)
那么有:

\[c_i=\sum\limits_{j}(-1)^{d(i\&j)}b_j \]

那对于系数来说,1的贡献是1,2的贡献是\((+/-)2\)这怎么弄呢,那么一个多项式的贡献不是\(-1\)就是\(3\)
考虑把这些多项式求和再\(FWT\)
这样每个位置得到的答案就是:

\[(-1)x+3(n-x)=f_i \]

这样可以解出来每个位置的\(-1\)的个数。
真实的系数就是:

\[c_i=(-1)^x3^{n-x} \]

我们再给他\(IFWT\)回去就行。
注意去掉空集的方案。

\(T4\)
\(THUPC2017\ findtree\)

事实上我们要求的就是每一种权值的方案数是否为0.
怎么做?
首先我们发现不能拆位来做。
就很恶心。
否则可以直接做矩阵树定理来求这个东西。
我们其实仍然可以拆位来做。
\(exFWT\)来把每一位拆成点值。
然后直接用变元矩阵树定理处理这个桶,求出每一个位置应当有的权值。
这相当于对所有的点值做一个树形乘法。
正好符合点值对位相乘的性质。
得到的新桶我们在\(exIFWT\)回来就得到了最终的方案数数组。
\(exFWT\)的用法是在每一位可以用不同的位运算来计算。
只需要在不同的位用不同的\(FWT\)计算方法就可以。
正确性显然。

\(T5\)
\(NOI2016\)循环之美


这个题作为\(NOI\)的题目总体还算中规中矩。
话说\(NOI\)的题目,结论题几乎都有提示欸。
这个提示的意思大概就是说在做除法的时候存在这样的事情:

\[xK^l\equiv x(mod\ y) \]

就是说余数在\(l\)次后重新出现。
那么有:

\[K^l\equiv 1(mod\ y) \]

根据欧拉定理来说,有\(\varphi(y)|l,(K,y)=1\).
同时由于是数值上互不相等,那么可以认为\(\frac{x}{y}\)为最简分数形式。

那么可以大胆地列出最终答案的表达式:

\[ans=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}[(i,j)=1][(j,K)=1] \]

剩下就是无聊的推式子环节了,不过也有几步惊心动魄的操作地说:

\[\begin{aligned} ans&=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}[(i,j)=1][(j,K)=1]\\ &=\sum\limits_{j=1}^{m}[(j,K)=1]\sum\limits_{i=1}^{n}[(i,j)=1]\\ &=\sum\limits_{j=1}^{m}[(j,K)=1]\sum\limits_{i=1}^{n}\sum\limits_{d|(i,j)}\mu(d)\\ &=\sum\limits_{d=1}^{min(n,m)}[(d,K)=1]\mu(d)\lfloor\frac{n}{d}\rfloor\sum\limits_{j=1}^{\lfloor\frac{m}{d}\rfloor}[(jd,K)=1]\\ f(n,K)&=\sum\limits_{d=1}^{n}[(d,K)=1]\mu(d)\\ &=\sum\limits_{d=1}^{n}\mu(d)\sum\limits_{g|(d,K)}\mu(g)\\ &=\sum\limits_{g|K}\mu(g)\sum\limits_{d=1}^{\lfloor\frac{n}{d}\rfloor}\mu(d)\\ &=\sum\limits_{g|K}\mu^2(g)\sum\limits_{d=1}^{\lfloor\frac{n}{g}\rfloor}\mu(d)[(d,g)=1]\\ &=\sum\limits_{g|K}\mu^2(g)f(\lfloor\frac{n}{g}\rfloor,g)\\ g(n)&=\sum\limits_{i=1}^{n}[(i,K)=1]\\ &=\lfloor\frac{n}{K}\rfloor g(K)+g(K-\lfloor\frac{n}{K}\rfloor K)\\ \end{aligned} \]

这样一边预处理快速查询,一边直接杜教筛就行了。

\(T6\)
\([Luogu3768]\)简单的数学题

这个题用到一些欧拉函数的套路。
推一波式子就出来了:

\[\begin{aligned} ans&=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}ij(i,j)\\ &=\sum\limits_{d=1}^{n}d^3\sum\limits_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum\limits_{j=1}^{\lfloor\frac{n}{d}\rfloor}ij[(i,j)=1]\\ &=\sum\limits_{d=1}^{n}d^3\sum\limits_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum\limits_{j=1}^{\lfloor\frac{n}{d}\rfloor}ij\sum\limits_{g|(i,j)}\mu(g)\\ &=\sum\limits_{d=1}^{n}d^3\sum\limits_{g=1}^{\lfloor\frac{n}{d}\rfloor}\mu(g)g^2sum^2(\lfloor\frac{n}{dg}\rfloor)\\ &=\sum\limits_{T=1}^{n}sum^2(\lfloor\frac{n}{T}\rfloor)\sum\limits_{d|T}d^3(\frac{T}{d})^2\mu(\frac{T}{d})\\ &=\sum\limits_{T=1}^{n}sum^2(\lfloor\frac{n}{T}\rfloor)T^2\sum\limits_{d|T}d\mu(\frac{T}{d})\\ &=\sum\limits_{T=1}^{n}sum^2(\lfloor\frac{n}{T}\rfloor)T^2\varphi(T)\\ f(n)&=n^2\varphi(n)\\ S(n)&=\sum\limits_{i=1}^{n}f(i)\\ g(n)&=n^2\\ h(n)&=n^3\\ f*g&=h\\ S(n)&=\sum\limits_{i=1}^{n}i^3-\sum\limits_{d=2}^{n}d^2S(\lfloor\frac{n}{d}\rfloor)\\ \end{aligned} \]

这就完事了。

\(T7\)
堪破神机

考虑\(m=2\)的时候,设方案数为\(f_i\)那么其实\(\{f\}\)就是斐波那契数列。
这样我们求一下这个数列的特征根。

\[x^2=x+1 \]

这样有:

\[\alpha=\frac{1+\sqrt{5}}{2},\beta=\frac{1-\sqrt{5}}{2} \]

我们知道特征根可以用于表示线性递推数列。

\[f_n=A\alpha^n+B\beta^n \]

代入前几项解得:

\[f_n=\frac{1}{\sqrt{5}}\alpha^n-\frac{1}{\sqrt{5}}\beta^n \]

那么有:

\[\begin{aligned} ans&=\sum\limits_{i=L}^{R}\binom{f_i}{K}\\ &=\frac{\sum\limits_{i=L}^{R}f_i^{\underline{K}}}{K!}\\ &=\frac{1}{K!}\sum\limits_{i=L}^{R}\sum\limits_{k=0}^{K}(-1)^{K-i}\begin{bmatrix}K\\i\end{bmatrix}f_i^k\\ &=\frac{1}{K!}\sum\limits_{k=0}^{K}(-1)^{K-i}\begin{bmatrix}K\\i\end{bmatrix}\sum\limits_{i=L}^{R}f_i^k\\ &=\frac{1}{K}\sum\limits_{k=0}^{K}(-1)^{K-i}\begin{bmatrix}K\\i\end{bmatrix}\sum\limits_{i=L}^{R}(A\alpha^i-B\beta^i)^k\\ &=\frac{1}{K}\sum\limits_{k=0}^{K}(-1)^{K-i}\begin{bmatrix}K\\i\end{bmatrix}\sum\limits_{i=L}^{R}\sum\limits_{j=0}^{k}\binom{k}{j}(A\alpha^i)^j(B\beta^i)^{k-j}\\ &=\frac{1}{K}\sum\limits_{k=0}^{K}(-1)^{K-i}\begin{bmatrix}K\\i\end{bmatrix}\sum\limits_{j=0}^{k}\binom{k}{j}A^jB^{k-j}\sum\limits_{i=L}^{R}\alpha^{ij}\beta^{i(k-j)}\\ \end{aligned} \]

那我们搞个扩域就行了。
直接设个\(i=\sqrt{5}\)
然后做一些复数运算最终就可以求到答案了。
上面那个式子的话后面的部分由于可以直接搞等比数列求和。
所以复杂就是\(O(K^2logn)\)的。

再来考虑\(m=3\)的情况。
设方案为\(g_i\)
那么有:

这样的话数列的式子呼之欲出了。

\[g_i=g_{i-1}+2\sum\limits_{j=0}^{i-1}g_{j} \]

然后错位相减一下。

\[g_{i}-g_{i-1}=g_{i-1}+2\sum\limits_{j=0}^{i-1}g_j-g_{i-2}-2\sum\limits_{j=0}^{i-2}g_j=3g_{i-1}-g_{i-2} \]

所以:

\[g_i=4g_{i-1}-g_{i-2} \]

同样可以搞个特征方程出来。

\[x^2=4x-1 \]

那么解得:

\[\alpha=\frac{4+\sqrt{8}}{2}=2+\sqrt{3},\beta=2-\sqrt{3} \]

仍然可以求出\(A,B\),略。
这样我们其实直接代入\(i=\sqrt{3}\)就可以了。
仍然可以用上面的方法再做一次。
这个题,出题人强行多合一。

\(T8\)

这个应该是那个斯特林反演的题,貌似是叫异或图来着,久闻大名了。
首先枚举一些划分情况\(A\),表示将集合中的点划分为多个子集,每个子集大小为\(a_i\),总共有\(|A|\)个子集。
\(g_A\)为将点集划分成\(A\)的情况,不同集合必然没有连边,相同集合可能有所连边的方案,\(f_A\)为恰好把点集分成\(A\)的方案。
这样可以用斯特林反演容斥出来\(f\),问题转化为求\(g\)
\(g\)是这个题的难点。
那么也就是说对于每条确定了的边都可以列出一个\(xor\)方程。
这样其实维护一下线性基的大小就可以了,设这个大小为\(k\),那就是确定了\(k\)个图的了,那么总的符合这种情况的子集个数就是\(2^{m-k}\)
\(A\)按照\(|A|\)搞个占位多项式。
这样我们最后玩个斯特林反演就可以了:

\[g_m=\sum\limits_{i=m}^{n}\begin{Bmatrix}i\\m\end{Bmatrix}f_i \]

\[f_m=\sum\limits_{i=m}^{n}(-1)^{i-m}\begin{bmatrix}i\\m\end{bmatrix}g_i \]

求个\(g_1\)就完事了。

posted @ 2020-04-26 11:51  Lrefrain  阅读(308)  评论(0编辑  收藏  举报