博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj3456:城市规划
阅读量:4676 次
发布时间:2019-06-09

本文共 1899 字,大约阅读时间需要 6 分钟。

感觉这个题是真的神仙啊,思路是真的难想

首先设\(f(i)\)\(i\)个点的无向连通图个数,然后设\(g(i)\)\(i\)个点的图的个数(注意,此处不一定联通)

那么我们考虑枚举\(1\)号点所在的联通块的大小

显然有

\[ g(n)=\sum_{i=1}^nf(i)\binom{n-1}{i-1}g(n-i)\\ \]
考虑到
\[ g(n)=2^{\binom{n}{2}}\\ \]
所以有
\[ \sum_{i=1}^{n}f(i)\binom{n-1}{i-1}2^{\binom{n-i}{2}}=2^{\binom{n}{2}}\\ \]
后面的应该就很好推了,这个题主要的难点是考虑枚举\(1\)所在的联通块大小

后面还是套路,把组合数拆开

\[ \sum_{i=1}^nf(i)\frac{(n-1)!}{(n-i)!(i-1)!}2^{\binom{n-i}{2}}=2^{\binom{n}{2}}\\ \]
把相同项移到一起去
\[ \sum_{i=1}^n\frac{f(i)}{(i-1)!}\frac{2^{\binom{n-i}{2}}}{(n-i)!}=\frac{2^{\binom{n}{2}}}{(n-1)!}\\ \]
这个式子已经很眼熟了,再设
\[ A(x)=\sum_{i=0}\frac{f(i)}{(i-1)!}x^i\\ B(x)=\sum_{i=0}\frac{2^{\binom{i}{2}}}{i!}x^i\\ C(x)=\sum_{i=0}\frac{2^{\binom{i}{2}}}{(i-1)!}x^i\\ \]
很显然有
\[ C(x)=A(x)B(x)\\ A(x)=C(x)B(x)^{-1} \]

然后就可以多项式求逆+NTT了

代码:

#include
#include
#include
#include
#include
#include
using namespace std;void read(int &x){ char ch;bool ok; for(ok=0,ch=getchar();!isdigit(ch);ch=getchar())if(ch=='-')ok=1; for(x=0;isdigit(ch);x=x*10+ch-'0',ch=getchar());if(ok)x=-x;}#define rg registerconst int maxn=4e5+10,mod=1004535809,g=3,gi=334845270,modd=mod-1;int n,a[maxn],b[maxn],c[maxn],m,fac[maxn],inv[maxn],len,ans,r[maxn],mx;int mul(int x,int y){return 1ll*x*y-1ll*x*y/mod*mod;}int add(int x,int y){return x+y>=mod?x+y-mod:x+y;}int del(int x,int y){return x-y<0?x-y+mod:x-y;}int mi(int a,int b){ int ans=1; while(b){ if(b&1)ans=mul(ans,a); b>>=1,a=mul(a,a); } return ans;}void ntt(int *a,int n,int f){ for(rg int i=0;i
i)swap(a[i],a[r[i]]); for(rg int i=1;i
<<=1){ int wn=mi(f?g:gi,(mod-1)/(i<<1)); for(rg int j=0;j
<<1){ int w=1; for(rg int k=0;k
>1); m=n;len=0; for(n=1;n<=m<<1;n<<=1)len++; for(rg int i=0;i
>1]>>1)|((i&1)<<(len-1)); for(rg int i=0;i
>1]>>1)|((i&1)<<(len-1)); ntt(b,n,1),ntt(c,n,1); for(rg int i=0;i

转载于:https://www.cnblogs.com/lcxer/p/10767913.html

你可能感兴趣的文章
NBear简介与使用图解
查看>>
ng-app一些使用
查看>>
ubuntu16.04安装 java JDK8
查看>>
中兴F412光猫超级密码破解、破解用户限制、关闭远程控制、恢复路由器拨号
查看>>
sql 查询目标数据库中所有的表以其关键信息
查看>>
C# 高效率创建字符串类(StringBuilder)
查看>>
sql server 符号函数sign
查看>>
bzoj 4337 树的同构
查看>>
OPENQUERY用法以及使用需要注意的地方
查看>>
1001. Extending MyPoint class
查看>>
js使用showModalDialog,弹出一个自适应大小窗口
查看>>
[poj 3436]最大流+输出结果每条边流量
查看>>
webpack的安装
查看>>
字符流Reader和Writer
查看>>
【校招面试 之 C/C++】第33题 C++ 11新特性(四)之STL容器
查看>>
Java替代C语言的可能性
查看>>
android ListView中CheckBox错位的解决
查看>>
linux下的mongodb数据库原生操作
查看>>
BNUOJ 1268 PIGS
查看>>
菜鸟的MySQL学习笔记(三)
查看>>