随笔分类 - ----组合数学
摘要:更新中//Templates From Extended_Ash/Cooevjnz/JacaJava/Tubbcrafft//To be continued...//Suffix Automationchar str[N]; int s[N][26],mx[N],f...
阅读全文
摘要:很明显,山峰一定是n那么无论其他的数在n的左边还是右边都对应一种单峰数列ok,答案就是2^(N-1)#include#include#include#define L long long#define M 1000000007using namespace std;L...
阅读全文
摘要:很明显,山峰一定是n那么无论其他的数在n的左边还是右边都对应一种单峰数列ok,答案就是2^(N-1)#include#include#include#define L long long#define M 1000000007using namespace std;L...
阅读全文
摘要:十分套路,这种题很明显是单独计算每个元素的贡献来搞的我们发现,对于ti,它最后到n,n的路线有C(2n-i-2,n-2)条而对于每条路线,其值发生的变化都为t[i]*a^(n-i)*b^(n-1)所以贡献就是∑t[i]*a^(n-i)*b^(n-1)*C(2n-i-2...
阅读全文
摘要:十分套路,这种题很明显是单独计算每个元素的贡献来搞的我们发现,对于ti,它最后到n,n的路线有C(2n-i-2,n-2)条而对于每条路线,其值发生的变化都为t[i]*a^(n-i)*b^(n-1)所以贡献就是∑t[i]*a^(n-i)*b^(n-1)*C(2n-i-2...
阅读全文
摘要:题意:给你n个不同的数问你能构成多少个不同的二叉堆显然不能枚举,我们考虑用递推我们令f[i]表示以i为根的二叉堆有多少种令l,r为i的左右儿子,令size[i]为以i为根的堆的大小那么显然,f[i]=f[l]*f[r]*C(size[i]-1,size[l]),因为n...
阅读全文
摘要:题意:给你n个不同的数问你能构成多少个不同的二叉堆显然不能枚举,我们考虑用递推我们令f[i]表示以i为根的二叉堆有多少种令l,r为i的左右儿子,令size[i]为以i为根的堆的大小那么显然,f[i]=f[l]*f[r]*C(size[i]-1,size[l]),因为n...
阅读全文
摘要:题意:求在n维空间里,长度为2m且起点和终点重合的简单路径(只能在一维中走)数量显然,我们在计算方案时,每次必然加入在同一维度的,方向相反的行动那么我们令f[i][j][k]表示目前在处理第i维,已经走了2*j步,其中有2*k步在第i维上那么显然,f[i+1][j][...
阅读全文
摘要:题意:求在n维空间里,长度为2m且起点和终点重合的简单路径(只能在一维中走)数量显然,我们在计算方案时,每次必然加入在同一维度的,方向相反的行动那么我们令f[i][j][k]表示目前在处理第i维,已经走了2*j步,其中有2*k步在第i维上那么显然,f[i+1][j][...
阅读全文