题目大意 本题的满二叉树定义为:不存在只有一个儿子的节点的二叉树. 定义一棵满二叉树\(A\)包含满二叉树\(B\)当且经当\(A\)可以通过下列三种操作变成\(B\): 把一个节点的两个儿子同时删掉 把一棵子树替换成根的的左子树或右子树. 定义\(k\)连树为一棵只有恰好\(k\)个叶子的满二叉树,如果某个节点有一个右孩子,那么这个右孩子一定是一个叶子. 对于给定的\(k\)和\(n\),对于所有在\(1\)到\(n\)之间的\(i\),你需要求出所有叶子节点恰好为\(i\),且不包含\(k\…
LINK:卷积 思考的时候 非常的片面 导致这道题没有推出来. 虽然想到了设生成函数 G(x)表示最后的答案的普通型生成函数 不过忘了化简 GG. 容易推出 \(G(x)=\frac{F(x)}{1-F(x)}\) 多项式求逆一下再卷积一下即可.(nlogn). 有dalao 提出了求通项公式的做法 对多项式求出类似于泰勒展开式那样的封闭形式. 然后 带入G进行化简 最终再由通项公式推出来.推出通项可以可以递推可以矩阵乘法优化 O(n)/(logn). 做法 来自@Lskkkno1 : 很妙的求…
传送门 codeforces传送门codeforces传送门codeforces传送门 生成函数好题. 卡场差评至今未过 题意简述:nnn个点的二叉树,每个点的权值KaTeX parse error: Expected 'EOF', got '\inC' at position 4: v_i\̲i̲n̲C̲=\{a_1,a_2,...a-,定义一棵树的权值为所有点的权值之和,问有多少棵树满足其权值等于i(i=1,2,...,m)i(i=1,2,...,m)i(i=1,2,...,m) 对每个点的…
显然的做法是求出斯特林数,但没有什么优化空间. 考虑一种暴力dp,即设f[i]为i块积木的所有方案层数之和,g[i]为i块积木的方案数.转移时枚举第一层是哪些积木,于是有f[i]=g[i]+ΣC(i,j)·f[i-j],g[i]=ΣC(i,j)·g[i-j] (j=1~i). 考虑优化 .我们发现这个转移非常像卷积.写成卷积形式,有f[i]=g[i]+Σi!·Σf[i-j]/j!/(i-j)!,g[i]=i!·Σg[i-j]/j!/(i-j)!.直接分治NTT即可. 诶是不是强行多了个log?考…
首先,我们构造一个函数$G(x)$,若存在$k∈C$,则$[x^k]G(x)=1$. 不妨设$F(x)$为最终答案的生成函数,则$[x^n]F(x)$即为权值为$n$的神犇二叉树个数. 不难推导出,$[x^n]F(x)=\sum_{i=0}^{n}[x^i]G(x)\sum_{j=0}^{n-i}[x^j]F(j)\times [x^{n-j-i}]F(n-j-i)$. (这个式子的意思就是说,不妨设当前根节点的权值为i,然后枚举左右两个子树的权值) 这个式子显然可以通过动规的方式去推,从而得出…
题目:http://cogs.pro:8080/cogs/problem/problem.php?pid=2259 如果构造生成函数是许多个 \( (1+x^{k}+x^{2k}+...) \) 相乘,不好算排列数: 发现排列数和肽链的长度,使用的种类数有关: 所以构造 \( A(x) \),次数是质量,系数是这个质量的氨基酸有多少种: 发现答案就是 \( B(x) = 1 + A(x) + A(x)^{2} + ... \),其中 \( A(x) \) 的次数就是长度: 所以 \( B(x)…
传送门 我是用多项式求逆做的因为分治FFT看不懂…… upd:分治FFT的看这里 话说这个万恶的生成函数到底是什么东西…… 我们令$F(x)=\sum_{i=0}^\infty f_ix^i,G(x)=\sum_{i=0}^\infty g_ix^i$,且$g_0=0$ 这俩玩意儿似乎就是$f(x)$和$g(x)$的生成函数 那么就有$$F(x)G(x)=\sum_{i=0}^\infty x^i\sum_{j+k=i}f_jg_k$$ 然后根据题目,有$$f_i=\sum_{j=1}^if_{…
题意 链接 Sol Orz yyb 一开始想的是直接设\(f_i\)表示\(i\)个点的无向联通图个数,枚举最后一个联通块转移,发现有一种情况转移不到... 正解是先设\(g(n)\)表示\(n\)个点的无向图个数,这个方案是\(2^{\frac{i(i-1)}{2}}\)(也就是考虑每条边选不选) 考虑如何得到\(g\) \[g(n) = \sum_{i=0}^n C_{n-1}^{i-1}f(i) g(n-i)\] 直接将\(2^{\frac{n(n-1)}{2}}\)带入然后化简一下可以得…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4565 我们带着这个根号是没法计算的 我们仔细观察一下,(a+sqrt(b))^n用二项式定理展开,我们发现只有sqrt(b)的奇数次方才是损失精度的小数部分 那么,一个启发式的方法是将这些小数部分消掉.... 然后我们发现了(a-sqrt(b))^n,用二项式定理展开 (a+sqrt(b))^n+(a-sqrt(b))^n=sigma{2*C(n,i*2)*a^(n-2*i)*b^(2*i)} 我…
城市规划 时间限制:40s      空间限制:256MB 题目描述 刚刚解决完电力网络的问题, 阿狸又被领导的任务给难住了.  刚才说过, 阿狸的国家有n个城市, 现在国家需要在某些城市对之间建立一些贸易路线, 使得整个国家的任意两个城市都直接或间接的连通. 为了省钱, 每两个城市之间最多只能有一条直接的贸易路径. 对于两个建立路线的方案, 如果存在一个城市对, 在两个方案中是否建立路线不一样, 那么这两个方案就是不同的, 否则就是相同的. 现在你需要求出一共有多少不同的方案.  好了, 这就…
题目:http://cogs.pro:8080/cogs/problem/problem.php?pid=2259 详见:https://www.cnblogs.com/Zinn/p/10054569.html #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define ll long long using namespace std; ,M=(<&…
Scout YYF I Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6757   Accepted: 1960 Description YYF is a couragous scout. Now he is on a dangerous mission which is to penetrate into the enemy's base. After overcoming a series difficulties,…
A: 求近似值 时间限制: 1 s      内存限制: 128 MB 提交 我的状态 题目描述 求⌊(5–√+6–√)2n⌋⌊(5+6)2n⌋%9932017. 例如:n=1,(5–√+6–√)2(5+6)2=21.9544....,⌊(5–√+6–√)2⌋⌊(5+6)2⌋%9932017=21. 输入 第一行输入T,表示n的个数.(1<=T<=200000) 下面T行每行一个数,表示n.(0<=n<=10^18) 输出 按照题意输出答案. 样例输入 3 0 1 2 样例输出 1…
装载自:http://www.cnblogs.com/183zyz/archive/2012/05/11/2495401.html 题目让求一个函数调用了多少次.公式比较好推.f[n] = f[n-1]*f[n-2].然后a和b系数都是呈斐波那契规律增长的.需要先保存下来指数.但是太大了.在这里不能用小费马定理.要用降幂公式取模.(A^x)%C=A^(x%phi(C)+phi(C))%C(x>=phi(C)) Phi[C]表示不大于C的数中与C互质的数的个数,可以用欧拉函数来求. 矩阵快速幂也不…
B - generator 1 题意 给你\(x_{0}.x_{1}.a.b.b.mod\),根据\(x_{i} = a*x_{i-1} + b*x_{i-2}\)求出\(x_{n}\) 思路 一般看到这种题就会想到矩阵快速幂,但是这次的\(n\)太大了,所以要用十进制倍增来算,但是单单用十进制倍增来算应该还会\(TLE\),然后就要用二进制倍增来优化了. 我们要先求出矩阵快速幂的通项式 \[ \begin{pmatrix}x_{n+1} \\x_{n}\end{pmatrix}= \begin…
传送门 两个序列相同当且仅当它们的笛卡尔树相同,于是变成笛卡尔树计数. 然后注意到每一个点的权值一定会比其左儿子的权值大,所以笛卡尔树上还不能够存在一条从根到某个节点的路径满足向左走的次数\(> m-1\).不难证明只需这个条件以及\(n \geq m\)的条件满足,一定存在一种权值分配方案使得\(1\)到\(m\)都被分配到. 不妨设\(F_i(x)\)表示向左走的次数小于\(i\)的笛卡尔树数量的生成函数,即\(f_{i,j}\)表示\(j\)个点.向左走的次数小于\(i\)的笛卡尔树的数量…
传送门 调了1h竟然是因为1004535809写成了998244353 "恰好有\(K\)种颜色出现了\(S\)次"的限制似乎并不容易达到,考虑容斥计算. 令\(c_j\)表示强制\(j\)种颜色恰好出现\(S\)次,其他颜色随意染的方案数.可以通过生成函数知道 \(\begin{align*} c_j &= \binom{m}{j} n! [x^n] (\frac{x^k}{k!})^j (\sum\limits_{i=0}^\infty \frac{x^i}{i!})^{m…
第一眼生成函数.四个等比数列形式的多项式相乘,可以化成四个分式.其中分母部分是固定的,可以多项式求逆预处理出来.而分子部分由于项数很少,询问时2^4算一下贡献就好了.这个思路比较直观.只是常数巨大,以及需要敲一发类似任意模数ntt的东西来避免爆精度.成功以这种做法拿下luogu倒数rank1,至于bzoj不指望能过了. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib>…
FFT #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<cmath> #include<algorithm> #define maxn 1000005 using namespace std; inline int read() { ,f=;char ch=getchar(); ; +ch-'; return x*f; }…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3456 首先考虑DP做法,正难则反,考虑所有情况减去不连通的情况: 而不连通的情况就是那个经典做法:选定一个划分点,枚举包含它的连通块,连通块以外的部分随便连(但不和连通块连通),合起来就是不连通的方案数: 设 \( f[i] \) 表示一共 \( i \) 个点时的连通方案数,\( g[i] \) 表示 \( i \) 个点随便连的方案数,即 \( g[i] = 2^{C_{i}^{2}}…
传送门 可以……这很多项式开根模板……而且也完全不知道大佬们怎么把这题的式子推出来的…… 首先,这题需要多项式开根和多项式求逆.多项式求逆看这里->这里,这里讲一讲多项式开根 多项式开方:已知多项式$B$,求多项式$A$满足$A^2\equiv B\pmod{x^n}$(和多项式求逆一样这里需要取模,否则$A$可能会有无数项) 假设我们已经求出$A'^2\equiv B\pmod{x^n}$,考虑如何计算出$A^2\equiv B\pmod{x^{2n}}$ 首先肯定存在$A^2\equiv B…
[BZOJ 3625] [Codeforces 438E] 小朋友的二叉树 (DP+生成函数+多项式开根+多项式求逆) 题面 一棵二叉树的所有点的点权都是给定的集合中的一个数. 让你求出1到m中所有权值为i的二叉树的个数. 两棵树不同当且仅当树的形态不一样或者是树的某个点的点权不一样 分析 设\(c(i)\)表示数值i是否在集合中.\(f(i)\)表示权值为i的二叉树的个数.那么 \[f(n)=\sum_{i=1}^n c(i) \sum_{j=0}^{n-i} f(j)f(n-i-j)\] 其…
题目大意 考虑一个含有\(n\)个互异正整数的序列\(c_1,c_2,\ldots ,c_n\).如果一棵带点权的有根二叉树满足其所有顶点的权值都在集合\(\{c_1,c_2,\ldots ,c_n\}\)中,我们的小朋友就会将其称作神犇的.并且他认为,一棵带点权的树的权值,是其所有顶点权值的总和. 给出一个整数\(m\),你能对于任意的\(s(1\leq s\leq m)\)计算出权值为\(s\)的神犇二叉树的个数吗? 我们只需要知道答案关于\(998244353\)取模后的值. \(n,m\…
按理说Po姐姐三月份来讲课的时候我就应该学了 但是当时觉得比较难加上自己比较懒,所以就QAQ了 现在不得不重新弄一遍了 首先说多项式求ln 设G(x)=lnF(x) 我们两边求导可以得到G'(x)=F‘(x)/F(x) 则G(x)就是F’(x)/F(x)的积分 我们知道多项式求导和积分是O(n)的,多项式求逆是O(nlogn)的 所以总时间复杂度O(nlogn) 多项式求ln一般解决的问题是这样的 设多项式f表示一些奇怪的东西,由一些奇怪的东西有序组成的方案为 f^1+f^2+f^3…… 化简之…
4555: [Tjoi2016&Heoi2016]求和 题意:求\[ \sum_{i=0}^n \sum_{j=0}^i S(i,j)\cdot 2^j\cdot j! \\ S是第二类斯特林数 \] 首先你要把这个组合计数肝出来,于是我去翻了一波<组合数学> 用斯特林数容斥原理推导那个式子可以直接出卷积形式,见下一篇,本篇是分治fft做法 组合计数 斯特林数 \(S(n,i)\)表示将n个不同元素划分成i个相同集合非空的方案数 Bell数 \(B(n)=\sum\limits_{i=…
题解 分治FFT 设\(f_i\)为\(i\)个点组成的无向图个数,\(g_i\)为\(i\)个点组成的无向连通图个数 经过简单的推导(枚举\(1\)所在的连通块大小),有: \[ f_i=2^{\frac{i(i-1)}{2}} \] \[ \begin{align} g_i&=f_i-\sum_{j=1}^{i-1}\binom{n-1}{j-1}g_jf_{i-j}\\ &=f_i-(i-1)!\sum_{j=1}^{i-1}\frac{g_j}{(j-1)!}\frac{f_{i-…
前言 学习了Great_Influence的递推实现,我给大家说一下多项式求逆严格的边界条件,因为我发现改动一些很小的边界条件都会使程序出错.怎么办,背代码吗?背代码是不可能,这辈子都不会背代码的.理解了边界条件就不会出错了. 分析 理论基础 \[A \times B \equiv 1 \qquad (\mod{x^n})\] \[A \times B' \equiv 1 \qquad (\mod{x^{\frac{n}{2}}})\] \[A \times (B-B') \equiv 0 \q…
题目链接 洛谷P4233 题解 我们只需求出总的哈密顿回路个数和总的强联通竞赛图个数 对于每条哈密顿回路,我们统计其贡献 一条哈密顿回路就是一个圆排列,有\(\frac{n!}{n}\)种,剩余边随便连 所以总的贡献为 \[(n - 1)!2^{{n \choose 2} - n}\] 我们只需求出总的强联通竞赛图的个数 设\(g[n]\)表示\(n\)个点竞赛图个数,\(f[n]\)表示强联通竞赛图个数 那么有 \[g[n] = \sum\limits_{i = 1}^{n}{n \choos…
不要以为用上Stirling数就一定离正解更近,FFT都是从DP式本身出发的. 设f[i]为i个积木的所有方案的层数总和,g[i]为i个积木的方案数,则答案为$\frac{f[i]}{g[i]}$ 转移枚举第一层是哪些积木:$$f_n=g_n+\sum_{i=1}^{n}\binom{n}{i}f_{n-i},f_0=0$$$$g_n=\sum_{i=1}^{n}\binom{n}{i}g_{n-i},g_0=1$$ 转化成卷积形式:$$\frac{f_n}{n!}=\frac{g_n}{n!}…
[题意]给定n,求Σi=0~nΣj=1~i s(i,j)*2^j*j!,n<=10^5. [算法]生成函数+排列组合+多项式求逆 [题解]参考: [BZOJ4555][Tjoi2016&Heoi2016]求和-NTT-多项式求逆 $ans=\sum_{i=0}^{n}\sum_{j=0}^{i}s(i,j)*2^j*j!$ 令$g(n)=\sum_{j=0}^{n}s(n,j)*2^j*j!$ 则ans是Σg(i),只要计算出g(i)的生成函数就可以统计答案. g(n)可以理解为将n个数划分…