数学

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

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

本来计划弄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)=sumlimits_{i=1}^{m}c(i)sumlimits_{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)}} ]

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

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

(nqleq 10^5)

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

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

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

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

(nleq 10^6,a_ileq 10^6)

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

[c_i=sumlimits_{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^lequiv x(mod y) ]

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

[K^lequiv 1(mod y) ]

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

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

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

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

[egin{aligned} ans&=sumlimits_{i=1}^{n}sumlimits_{j=1}^{m}[(i,j)=1][(j,K)=1]\ &=sumlimits_{j=1}^{m}[(j,K)=1]sumlimits_{i=1}^{n}[(i,j)=1]\ &=sumlimits_{j=1}^{m}[(j,K)=1]sumlimits_{i=1}^{n}sumlimits_{d|(i,j)}mu(d)\ &=sumlimits_{d=1}^{min(n,m)}[(d,K)=1]mu(d)lfloorfrac{n}{d} floorsumlimits_{j=1}^{lfloorfrac{m}{d} floor}[(jd,K)=1]\ f(n,K)&=sumlimits_{d=1}^{n}[(d,K)=1]mu(d)\ &=sumlimits_{d=1}^{n}mu(d)sumlimits_{g|(d,K)}mu(g)\ &=sumlimits_{g|K}mu(g)sumlimits_{d=1}^{lfloorfrac{n}{d} floor}mu(d)\ &=sumlimits_{g|K}mu^2(g)sumlimits_{d=1}^{lfloorfrac{n}{g} floor}mu(d)[(d,g)=1]\ &=sumlimits_{g|K}mu^2(g)f(lfloorfrac{n}{g} floor,g)\ g(n)&=sumlimits_{i=1}^{n}[(i,K)=1]\ &=lfloorfrac{n}{K} floor g(K)+g(K-lfloorfrac{n}{K} floor K)\ end{aligned} ]

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

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

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

[egin{aligned} ans&=sumlimits_{i=1}^{n}sumlimits_{j=1}^{n}ij(i,j)\ &=sumlimits_{d=1}^{n}d^3sumlimits_{i=1}^{lfloorfrac{n}{d} floor}sumlimits_{j=1}^{lfloorfrac{n}{d} floor}ij[(i,j)=1]\ &=sumlimits_{d=1}^{n}d^3sumlimits_{i=1}^{lfloorfrac{n}{d} floor}sumlimits_{j=1}^{lfloorfrac{n}{d} floor}ijsumlimits_{g|(i,j)}mu(g)\ &=sumlimits_{d=1}^{n}d^3sumlimits_{g=1}^{lfloorfrac{n}{d} floor}mu(g)g^2sum^2(lfloorfrac{n}{dg} floor)\ &=sumlimits_{T=1}^{n}sum^2(lfloorfrac{n}{T} floor)sumlimits_{d|T}d^3(frac{T}{d})^2mu(frac{T}{d})\ &=sumlimits_{T=1}^{n}sum^2(lfloorfrac{n}{T} floor)T^2sumlimits_{d|T}dmu(frac{T}{d})\ &=sumlimits_{T=1}^{n}sum^2(lfloorfrac{n}{T} floor)T^2varphi(T)\ f(n)&=n^2varphi(n)\ S(n)&=sumlimits_{i=1}^{n}f(i)\ g(n)&=n^2\ h(n)&=n^3\ f*g&=h\ S(n)&=sumlimits_{i=1}^{n}i^3-sumlimits_{d=2}^{n}d^2S(lfloorfrac{n}{d} floor)\ end{aligned} ]

这就完事了。

(T7)
堪破神机

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

[x^2=x+1 ]

这样有:

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

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

[f_n=Aalpha^n+Beta^n ]

代入前几项解得:

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

那么有:

[egin{aligned} ans&=sumlimits_{i=L}^{R}inom{f_i}{K}\ &=frac{sumlimits_{i=L}^{R}f_i^{underline{K}}}{K!}\ &=frac{1}{K!}sumlimits_{i=L}^{R}sumlimits_{k=0}^{K}(-1)^{K-i}egin{bmatrix}K\iend{bmatrix}f_i^k\ &=frac{1}{K!}sumlimits_{k=0}^{K}(-1)^{K-i}egin{bmatrix}K\iend{bmatrix}sumlimits_{i=L}^{R}f_i^k\ &=frac{1}{K}sumlimits_{k=0}^{K}(-1)^{K-i}egin{bmatrix}K\iend{bmatrix}sumlimits_{i=L}^{R}(Aalpha^i-Beta^i)^k\ &=frac{1}{K}sumlimits_{k=0}^{K}(-1)^{K-i}egin{bmatrix}K\iend{bmatrix}sumlimits_{i=L}^{R}sumlimits_{j=0}^{k}inom{k}{j}(Aalpha^i)^j(Beta^i)^{k-j}\ &=frac{1}{K}sumlimits_{k=0}^{K}(-1)^{K-i}egin{bmatrix}K\iend{bmatrix}sumlimits_{j=0}^{k}inom{k}{j}A^jB^{k-j}sumlimits_{i=L}^{R}alpha^{ij}eta^{i(k-j)}\ end{aligned} ]

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

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

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

[g_i=g_{i-1}+2sumlimits_{j=0}^{i-1}g_{j} ]

然后错位相减一下。

[g_{i}-g_{i-1}=g_{i-1}+2sumlimits_{j=0}^{i-1}g_j-g_{i-2}-2sumlimits_{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},eta=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=sumlimits_{i=m}^{n}egin{Bmatrix}i\mend{Bmatrix}f_i ]

[f_m=sumlimits_{i=m}^{n}(-1)^{i-m}egin{bmatrix}i\mend{bmatrix}g_i ]

求个(g_1)就完事了。

原文地址:https://www.cnblogs.com/Lrefrain/p/12778548.html