BZOJ3456 城市规划 【生成函数】【FFT】
题目分析:
容易想到生成函数的构造方法。
令g(n)表示n个点的无向图个数,f(n)表示n个点的无向连通图的个数。式子是显然的。
容易发现式子是卷积的形式,写出生成函数,然后多项式求逆后多项式乘法即可。
代码:
#include<bits/stdc++.h>
using namespace std; int n; const int maxn = ;
const int mod = ;
const int gg = ; int A[maxn],B[maxn],IB[maxn],B0[maxn],F[maxn];
int fac[maxn/],ord[maxn]; int fast_pow(int now,long long pw){
if(pw == ) return ;
if(pw == ) return now;
int z = fast_pow(now,pw/);
z = (1ll*z*z)%mod;
if(pw & ) z = (1ll*z*now)%mod;
return z;
} void FFT(int *d,int len,int dr){
for(int i=;i<len;i++) if(ord[i] < i) swap(d[i],d[ord[i]]);
for(int i=;i<len;i<<=){
int wn = fast_pow(gg,(mod-)/(i<<));
if(dr == -) wn = fast_pow(wn,mod-);
for(int j=;j<len;j+=(i<<)){
int w = ;
for(int k=;k<i;k++,w=(1ll*w*wn)%mod){
int x = d[j+k],y = (1ll*w*d[j+k+i])%mod;
d[j+k] = (x+y)%mod; d[j+k+i] = (x-y)%mod;
if(d[j+k+i] < ) d[j+k+i]+=mod;
}
}
}
if(dr == -){
int iv = fast_pow(len,mod-);
for(int i=;i<len;i++) d[i] = (1ll*d[i]*iv)%mod;
}
} void GetA(){
for(int i=;i<=n;i++)
A[i] = (1ll*fast_pow(,1ll*i*(i-)/)*fast_pow(fac[i-],mod-))%mod;
} void GetB(){
for(int i=;i<=n;i++)
B[i] = (1ll*fast_pow(,1ll*i*(i-)/)*fast_pow(fac[i],mod-))%mod;
} void Inv(){
IB[] = fast_pow(B[],mod-);
int res = ;
while(res < n+) res=res<<;
for(int i=,j=;i<=res;i<<=,j++){
int bit = i*,om = j+;
for(int k=;k<i;k++) B0[k] = B[k];
for(int k=;k<bit;k++) ord[k]=(ord[k>>]>>)+((k&)<<om-);
FFT(IB,bit,);FFT(B0,bit,);
for(int k=;k<bit;k++) B0[k]=(1ll*B0[k]*((1ll*IB[k]*IB[k])%mod))%mod;
for(int k=;k<bit;k++) IB[k] = (1ll**IB[k]-B0[k]+mod)%mod;
FFT(IB,bit,-);
for(int k=i;k<*i;k++) IB[k] = ;
}
for(int i=n;i<=res;i++) IB[i] = ;
} void Multi(){
int res = ,len = ;
while(res < *n+)res = res<<,len++;
for(int i=;i<res;i++) ord[i]=(ord[i>>]>>)+((i&)<<len-);
FFT(IB,res,);FFT(A,res,);
for(int i=;i<res;i++) F[i] = (1ll*A[i]*IB[i])%mod;
FFT(F,res,-);
} void work(){fac[] = ;
for(int i=;i<=n;i++) fac[i] = (1ll*fac[i-]*i)%mod;
GetA();
GetB();
Inv();
Multi();
F[n] = (1ll*F[n]*fac[n-])%mod;
printf("%d",F[n]);
} int main(){
scanf("%d",&n);
work();
return ;
}
BZOJ3456 城市规划 【生成函数】【FFT】的更多相关文章
- [BZOJ3456]城市规划(生成函数+多项式求逆+多项式求ln)
城市规划 时间限制:40s 空间限制:256MB 题目描述 刚刚解决完电力网络的问题, 阿狸又被领导的任务给难住了. 刚才说过, 阿狸的国家有n个城市, 现在国家需要在某些城市对之间建立一 ...
- loj6570 毛毛虫计数(生成函数FFT)
link 巨佬olinr的题解 <-- olinr很强 考虑生成函数 考虑直径上点数>=4的毛毛虫的直径,考虑直径中间那些节点以及他上面挂的那些点的EGF \(A(x)=\sum_{i\g ...
- bzoj 3456 城市规划 —— 分治FFT / 多项式求逆 / 指数型生成函数(多项式求ln)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3456 首先考虑DP做法,正难则反,考虑所有情况减去不连通的情况: 而不连通的情况就是那个经典 ...
- 2019.01.03 bzoj3456: 城市规划(生成函数+多项式取对)
传送门 生成函数好题. 题意:求n个点的简单(无重边无自环)无向连通图数目 思路: 对简单无向图构造生成函数f(x)=∑n2Cn2xnn!f(x)=\sum_n2^{C_n^2}\frac{x^n}{ ...
- bzoj 3456 城市规划——分治FFT / 多项式求逆 / 多项式求ln
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3456 分治FFT: 设 dp[ i ] 表示 i 个点时连通的方案数. 考虑算补集:连通的方 ...
- BZOJ3456城市规划
题目描述 刚刚解决完电力网络的问题, 阿狸又被领导的任务给难住了.刚才说过, 阿狸的国家有n个城市, 现在国家需要在某些城市对之间建立一些贸易路线, 使得整个国家的任意两个城市都直接或间接的连通.为了 ...
- 挑选队友 (生成函数 + FFT + 分治)
链接:https://www.nowcoder.com/acm/contest/133/D来源:牛客网 题目描述 Applese打开了m个QQ群,向群友们发出了组队的邀请.作为网红选手,Applese ...
- 【BZOJ3771】Triple 生成函数 FFT 容斥原理
题目大意 有\(n\)把斧头,不同斧头的价值都不同且都是\([0,m]\)的整数.你可以选\(1\)~\(3\)把斧头,总价值为这三把斧头的价值之和.请你对于每种可能的总价值,求出有多少种选择方案. ...
- BZOJ3456 城市规划 【多项式求ln】
题目链接 BZOJ3456 题解 真是一道经典好题,至此已经写了分治\(NTT\),多项式求逆,多项式求\(ln\)三种写法 我们发现我们要求的是大小为\(n\)无向联通图的数量 而\(n\)个点的无 ...
随机推荐
- mysql无法远程连接到数据库解决方法
ERROR 1130: Host ’xxx.xxx.xxx.xxx′ is not allowed to connect to this MySQL server这是告诉你没有权限连接指定IP的主机, ...
- Flutter - Json序列化
这个问题,FlutterChina小组已经说明的非常清楚易懂了. 详见https://flutterchina.club/json/
- NFS共享文件系统部署
1. 概述 本篇博客主要是介绍如何安装和使用NFS服务. 2. 安装软件包 首先确认系统是否已经安装相应的软件包,执行命:rpm -qa | egrep "rpcbind|nfs-utils ...
- 写入mssql出现乱码
1.出现乱码的场景如下: --------------------------------------------------------------------------------------- ...
- [T-ARA N4/二段横踢][Can We Love]
歌词来源:http://music.163.com/#/song?id=26310867 Can We Love Can We Love [Can We Love Can We Love] Can W ...
- WinForm多线程+委托防止界面假死
当有大量数据需要计算.显示在界面或者调用sleep函数时,容易导致界面卡死,可以采用多线程加委托的方法解决 using System; using System.Collections.Generic ...
- hots团队项目终审报告
一.团队成员: 徐钧鸿: 1994年1月19日生人,摩羯座最后一天.所以有摩羯的强迫症和水瓶古怪的性格 暂且算队长吧…… 高中的时候因为兴趣学了竞赛,于是就入坑了,于是就来北航学计算机了 兴趣面很广, ...
- Bing词典分析
0x01 Bug测试结果 本次测试的是Bing词典wp版本V4.5.2,经过测试,共发现如下Bug. 1.更新后,旧版本首页的每日单词与文章推荐不能重新获得,部分搜索历史记录丢失. 2.在单词挑战模式 ...
- 第十次Scrum meeting
第十次Scrum meeting 任务及完成度: 成员 1.2 1.3 陈谋 任务1040:完成stackoverflow的数据处理后的json处理(100%) 任务1114-2:完成对pdf.pp ...
- <构建之法>第三10、11、12章
第十章 典型用户和场景 问题:如何更准确知道用户的需求是什么,设计出满足用户的软件? 第十一章 软件设计与实现 问题:软件设计过程中,如何管理设计变更? 第十二章 用户体验 问题:在何时开始设计用户体 ...