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=…
4555: [Tjoi2016&Heoi2016]求和 题意:求\[ \sum_{i=0}^n \sum_{j=0}^i S(i,j)\cdot 2^j\cdot j! \\ S是第二类斯特林数 \] 首先你要把这个组合计数肝出来,于是我去翻了一波<组合数学> 分治fft做法见上一篇,本篇是容斥原理+fft做法 组合计数 斯特林数 \(S(n,i)\)表示将n个不同元素划分成i个相同集合非空的方案数 考虑集合不相同情况\(S'(n,i)=S(n,i)*i!\),我们用容斥原理推♂倒她…
题目链接 https://www.luogu.org/problem/P5564 题解 这题最重要的一步是读明白题. 为了方便起见下面设环长可以是\(1\), 最后统计答案时去掉即可. 实际上就相当于如果只有树没有环,答案就是卡特兰数第\((n-1)\)项.令\(C(x)\)为Catalan数生成函数,\(T(x)\)为这种树的生成函数,则\(T(x)=xC(x)\). 然后环的话可以考虑Burnside引理,首先枚举环长,枚举置换,易得答案为\(\sum^n_{k=1}\frac{1}{k}\…
HDU4609 FFT+组合计数 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4609 题意: 找出n根木棍中取出三根木棍可以组成三角形的概率 题解: 我们统计每种长度的棍子的个数 我们对于长度就有一个多项式 \[ f=num[0]*i_0+num[1]*i_1+num[2]*i_2.....num[len]*i_len \] 我们考虑两根棍子可以组成所有长度的方案数 所以我们对num数组求一次FFT 两根棍子组成长度的上界是\(len_{max}…
别问我为啥突然刷了道OI题,也别问我为啥花括号不换行了... 题目描述 求含 $n$ 个碳原子的本质不同的烷基数目模 $998244353$ 的结果.$1\le n\le 10^5$ . 题解 Burnside引理+多项式牛顿迭代 不考虑同构的话,很容易想到dp方程 $\begin{cases}f_0=1\\f_i=\sum\limits_{j+k+l+1=i}f_jf_kf_l\end{cases}$ . 考虑同构,可以通过容斥原理,大力讨论一下容斥系数.一个更简单的方法是考虑Burnside…
题目链接 (Luogu) https://www.luogu.org/problem/P4727 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=1488 题解 Burnside引理经典题. 首先考虑一个\(O(n!\times poly(n))\)暴力: 枚举点的置换,然后计算在置换下保持不变的图的个数. 把置换拆成若干个轮换. (1) 考虑轮换内部: 假设一轮换为\((a_1\ a_2\ ...\ a_n)\), 那么\((a_…
[模板]多项式乘法(FFT) 题目链接:luogu P3803 题目大意 给你两个多项式,要你求这两个多项式乘起来得到的多项式.(卷积) 思路 系数表示法 就是我们一般来表示一个多项式的方法: \(A(x)=a_1x^k+a_2x^{k-1}+...+a_k\) 或者可以这样表示: \(A(x)=\sum\limits_{i=1}^{k}a_i\times x_i\) 那你很容易看到,用来做这道题用系数表示法来做是 \(O(n^2)\) 的. 点值表示法 假设我们已经知道了这个多项式,那我们把…
不用FFT的多项式(大雾) 题目链接: https://www.luogu.org/problemnew/show/P5469 (这题在洛谷都成绿题了海星) 题解: 首先我们考虑,一个序列位置最右边的最大值可以走遍整个序列,并且其余任何点都不能跨过这个位置. 所以我们可以区间dp, \(dp[l][r][x]\)表示区间\([l,r]\)最大值不超过\(x\)的方案数,枚举最大值点\(mid\)及其值\(k\), \(dp[l][r][x]=\sum_{mid}\sum_{k}dp[l][mid…
原文链接www.cnblogs.com/zhouzhendong/p/CF438E.html 前言 没做过多项式题,来一道入门题试试刀. 题解 设 $a_i$ 表示节点权值和为 $i$ 的二叉树个数,特别的,我们定义 $a_0 = 1$ ,即我们认为没有节点也算一种二叉树. 设 $$g(x) = \sum_{i=1}^n x^{c_i}\\f(x) = \sum_{i=0}^{\infty} a_i x^i$$ 根据组合意义可得 $$f^2(x) g(x) + 1 = f(x) $$ 于是 $$…
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ424.html 题解 主席太神仙了! 首先我们把题意转化成:对所有挺好序列建 笛卡尔树,有多少笛卡尔树互不同构. 容易推出 dp 式子:$f[i][j]$ 表示 $j$ 个数,他们的 max 为 i . $$f[i][j] = \sum_{k=0}^{j-1} f[i-1][k] * f[i][j-k-1]\\f[i][0] = 1\\f[0][i] = 0(i>0)\\f[1][i] = 1$$ 这里…
原文链接http://www.cnblogs.com/zhouzhendong/p/8781889.html 题目传送门 - CodeForces 286E 题意 首先,给你$n$个数(并告诉你$m$),分别为$p_{1\dots n}$. 让你求一个数的集合,满足: 当且仅当从这个数的集合中取数(可以重复)求和时(设得到的和为$sum$),如果$sum\leq m$,则数$sum$在给你的$n$个数之中. 如果没有这种集合,输出$NO$. 否则,先输出$YES$,然后输出这个集合最小时的元素个…
原文链接http://www.cnblogs.com/zhouzhendong/p/8820963.html 题目传送门 - BZOJ4451 题意 给你一个$n\times n$矩阵的第一行和第一列,其余的数通过如下公式推出: $$f_{i,j}=a\cdot f_{i,j-1}+b\cdot f_{i-1,j}+c$$ 求$f_{n,n}\mod (10^6+3)$. 题解 利用$FFT$来解决此题 真是一道好题只是我太菜了.光$FFT$就调了好久.当然本题可以直接递推(将写在用$FFT$实…
原文链接http://www.cnblogs.com/zhouzhendong/p/8823962.html 题目传送门 - BZOJ4827 题意 有两个长为$n$的序列$x$和$y$,序列$x,y$的第$i$项分别是$x_i,y_i$. 选择一个序列$A$,现在你可以对它进行如下两种操作: $1.$ 得到一个和$A$循环同构的序列$A'$. $2.$ 给所有的$A'_i$都加上$c(c\in N^+)$,得到序列$A''$. 你进行上面两个操作之后,得到的序列分别为$x'',y''$(注意$…
原文链接http://www.cnblogs.com/zhouzhendong/p/8835443.html 题目传送门 - CodeForces 958F3 题意 有$n$个球,球有$m$种颜色,分别编号为$1\cdots m$,现在让你从中拿$k$个球,问拿到的球的颜色所构成的可重集合有多少种不同的可能. 注意同种颜色球是等价的,但是两个颜色为$x$的球不等价于一个. $1\leq n\leq 2\times 10^5,\ \ \ \ \ 1\leq m,k\leq n$. 题解 来自Hel…
原文链接http://www.cnblogs.com/zhouzhendong/p/8848990.html 题目传送门 - CodeForces 623E 题意 给定$n,k$. 让你构造序列$a(0<a_i<2^k)$,满足$b_i(b_i=a_1\ or\ a_2\ or\ \cdots\ or\ a_i)$严格单调递增.($or$为按位或) 问你方案总数.对$10^9+7$取模. $n\leq 10^{18},k\leq 30000$ 题解 毛爷爷论文题. 我怀疑我看到的是假论文.里面…
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ23.html 题目传送门 - UOJ#23 题意 给定一个有 n 个节点的仙人掌(可能有重边). 对于所有的 $L(1\leq L\leq n-1)$ ,求出有多少不同的从节点 1 出发的包含 L 条边的简单路径.简单路径是指不重复经过任意一点. $n\leq 10^5$ 题解 首先我们把走一条边看作多项式 $x^1$ ,那么一条长度为 L 的路径就是其路径上的多项式的乘积. 接下来称“环根”为距离节点…
原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ3451.html 题目传送门 - BZOJ3451 题意 给定一棵有 $n$ 个节点的树,在树上随机点分治,问消耗时间的期望. 计算点分治耗时由如下函数给出: Time = 0 Solve( T ){ Time += |T| if ( |T| = 1 ) then return ; x = 一个随机节点 in T for y in {与 x 直接连边的节点 in T} do Solve( SubTre…
原文链接www.cnblogs.com/zhouzhendong/p/LOJ2983.html 前言 我怎么什么都不会?贺忙指导博客才会做. 题解 我们分三个子问题考虑. 子问题0 将红蓝共有的边连接,每一个连通块的颜色相同,不同连通块独立. 答案是 \(y ^ {连通块数}\) . 子问题1 对于红树的一种连接方案,假设将在蓝树上也有的边连接起来,假设连了 \(i\) 条边,那么对答案的贡献就是: \[y ^ n / y ^ i \] 令 \[z = \frac 1 y \] 根据二项式定理…
做了四五天的专题,但是并没有刷下多少题.可能一开始就对多项式这块十分困扰,很多细节理解不深. 最简单的形式就是直接两个多项式相乘,也就是多项式卷积,式子是$N^2$的.多项式算法的过程就是把卷积做一种变换,在变换后各系数相称得到新系数.其实这一步变换的构造过程挺深奥的,并不是很会.对于多项式卷积的变换就是点值.于是就有了快速变换这样的算法. 细节问题出过很多.边界的问题容易弄错.一般如果是两个N项多项式相乘,得到的是一个$2*N-1$项的多项式,这是存在系数的,只不过一般我们只要N项的结果,所以…
自己整理出来的模板 存在的问题: 1.多项式求逆常数过大(尤其是浮点数FFT) 2.log只支持f[0]=1的情况,exp只支持f[0]=0的情况 有待进一步修改和完善 FFT: #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef double db; ); ,M=1e6+,mod=; int n,m,n2,a[N]; int Pow(int x,int p) { ; ,x=(ll)x*x%mod…
自己码了一个模板...有点辛苦...常数十分大,小心使用 #include <iostream> #include <stdio.h> #include <math.h> #include <string.h> #include <time.h> #include <stdlib.h> #include <algorithm> #include <vector> using namespace std; #de…
原文链接www.cnblogs.com/zhouzhendong/p/UOJ335.html 前言 CLY大爷随手切这种题. 日常被CLY吊打系列. 题解 首先从 pruffer 编码的角度考虑这个问题. pruffer 编码的长度为 $n-2$ ,如果点 $i$ 在 pruffer 编码中出现了 $d_i - 1$ 次,那么点 $i$ 的度数就是 $d_i$ ,对答案的贡献次数就是 $\binom {n-2}{d_i}a_i ^ {d_i}$ . 于是自然想到用 EGF 做这个题.设 $$f_…
题目传送门 - BZOJ4503 题意概括 给定两个字符串S和T,回答T在S中出现了几次,在哪些位置出现.注意T中可能有?字符,可以匹配任何字符. 题解 首先,假装你已经知道了这是一道$FFT$题. 考虑怎样$FFT$. 字符串匹配的时候,对于匹配成功的对应字母的编号(比如分别是$i$和$j$),满足了$i-j$都相同.但是我们需要的是$i+j$都相等. 于是我们用$FFT$的经典套路,翻转$T$串. 我们构造一个卷积: $$\sum_{i=0}^{n}\sum_{j=0}^{m}(S_{i}-…
原文链接http://www.cnblogs.com/zhouzhendong/p/8798532.html 题目传送门 - BZOJ4259 题意 给你两个串,用其中一个来匹配另一个.问从母串的那些位置开始可以匹配模式串.注意有"*"可以匹配任何字符. 串长$\leq 3\times 10^5$. 题解 本题和BZOJ4503几乎一毛一样. 这里直接放BZOJ4503的传送门. http://www.cnblogs.com/zhouzhendong/p/8536065.html 但是…
原文链接http://www.cnblogs.com/zhouzhendong/p/8782849.html 题目传送门 - CodeForces 528D 题意 给你两个串$A,B(|A|\geq|B|)$,以及一个$k$. 其中$A_i$与$B_j$匹配的条件是$A_{i-k\dots i+k}$中至少有一个与$B_j$相同. 问$B$能在$A$中匹配多少次. 字符集:$\{'A','C','G','T'\}$. $|B|\leq|A|\leq 2\times 10^5,k\leq 2\ti…
原文链接http://www.cnblogs.com/zhouzhendong/p/8762639.html 题目传送门 - BZOJ3527 题意 给出长度为$m$的序列$q_{1..m}$,让你输出长度为$m$的序列$E_{1..m}$. 其中: $$E_i=\sum_{j=1}^{i-1}\frac{q_j}{(i-j)^2}-\sum_{j=i+1}^{m}\frac{q_j}{(i-j)^2}$$ 题解 我们设 $$f_i=q_i,g_i=\frac 1{i^2}(g_0=0,且对于i…
原文链接http://www.cnblogs.com/zhouzhendong/p/8830036.html 题目传送门 - BZOJ4836 题意 定义二元运算$opt$满足 $$x\ opt\ y=\begin{cases}x+y & \text{$(x<y)$} \\ x-y & \text{$(x\geq y)$}\end{cases}$$ 现在给定一个长为$n$的数列$a$和一个长为$m$的数列$b$,接下来有$q$次询问.每次询问给定一个数字$c$你需要求出有多少对$(i…
原文链接http://www.cnblogs.com/zhouzhendong/p/8847145.html 题目传送门 - CodeForces 553E 题意 一个有$n$个节点$m$条边的有向图,每条边连接了$a_i$和$b_i$,花费为$c_i$. 每次经过某一条边就要花费该边的$c_i$. 第$i$条边耗时为$j$的概率为$p_{i,j}$. 现在你从$1$开始走到$n$,如果你在$t$单位时间内(包括$t$)到了$n$,不需要任何额外花费,否则你要额外花费$x$. 问你在最优策略下的…
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round3-D.html 题目传送门 - 2018牛客多校赛第三场 D 题意 给定两个字符串,在根据给定的字符表转成相应的字符之后,问前一个串在后面一个串中匹配了多少次. 一个串在另一个串的某一个位置匹配,当且仅当从该位置起截取长度与那个串相同的一个子串,这个子串与那个串等价. 定义两个串等价,当且仅当这两个串的对应位置的 Ascll 码值相差不大于 1 . 任意一个…
题目链接 https://www.luogu.org/problem/P4708 题解 看上去Luogu P4706-4709是Sdchr神仙出的一场比赛,一道水题和三道很有趣的题终于全过了纪念QAQ(然而后三道都看了题解) 以及为啥这题AC代码几乎全是打表.. 前置题目: BZOJ1488 求\(n\)个点无标号无向图个数.(欢迎阅读 https://www.cnblogs.com/suncongbo/p/11295453.html ) 没做过的建议先去做一下那题. 这道题依然是枚举拆分数,然…