传送门

这题太珂怕了……如果是我的话完全想不出来……

题解

 1 //minamoto
 2 #include<iostream>
 3 #include<cstdio>
 4 #include<algorithm>
 5 #define ll long long
 6 #define swap(x,y) (x^=y,y^=x,x^=y)
 7 #define mul(x,y) (1ll*(x)*(y)%P)
 8 #define add(x,y) (x+y>=P?x+y-P:x+y)
 9 #define dec(x,y) (x-y<0?x-y+P:x-y)
10 using namespace std;
11 const int N=1000005,P=1004535809;
12 inline int ksm(int a,ll b){
13     int res=1;
14     while(b){
15         if(b&1) res=mul(res,a);
16         a=mul(a,a),b>>=1;
17     }
18     return res;
19 }
20 int n,r[N],A[N],B[N],fac[N],finv[N],O[N],C[N],F[N],G[N];
21 inline void init(){
22     fac[0]=fac[1]=finv[0]=1;
23     for(int i=2;i<=n;++i) fac[i]=mul(fac[i-1],i);
24     finv[n]=ksm(fac[n],P-2);
25     for(int i=n-1;i;--i) finv[i]=mul(finv[i+1],i+1);
26 }
27 void NTT(int *A,int type,int len){
28     int limit=1,l=0;
29     while(limit<len) limit<<=1,++l;
30     for(int i=0;i<limit;++i)
31     r[i]=(r[i>>1]>>1)|((i&1)<<(l-1));
32     for(int i=0;i<limit;++i)
33     if(i<r[i]) swap(A[i],A[r[i]]);
34     for(int mid=1;mid<limit;mid<<=1){
35         int R=mid<<1,Wn=ksm(3,(P-1)/R);O[0]=1;
36         for(int j=1;j<mid;++j) O[j]=mul(O[j-1],Wn);
37         for(int j=0;j<limit;j+=R){
38             for(int k=0;k<mid;++k){
39                 int x=A[j+k],y=mul(O[k],A[j+k+mid]);
40                 A[j+k]=add(x,y),A[j+k+mid]=dec(x,y);
41             }
42         }
43     }
44     if(type==-1){
45         reverse(A+1,A+limit);
46         for(int i=0,inv=ksm(limit,P-2);i<limit;++i)
47         A[i]=mul(A[i],inv);
48     }
49 }
50 void Inv(int *a,int *b,int len){
51     if(len==1) return (void)(b[0]=ksm(a[0],P-2));
52     Inv(a,b,len>>1);
53     for(int i=0;i<len;++i) F[i]=a[i],G[i]=b[i];
54     NTT(F,1,len<<1),NTT(G,1,len<<1);
55     for(int i=0;i<(len<<1);++i)
56     F[i]=mul(mul(F[i],G[i]),G[i]);
57     NTT(F,-1,len<<1);
58     for(int i=0;i<len;++i) b[i]=(1ll*(b[i]<<1)%P+P-F[i])%P;
59 }
60 int main(){
61 //    freopen("testdata.in","r",stdin);
62     scanf("%d",&n);init();
63     int len=0;for(len=1;len<=(n*2);len<<=1);
64     A[0]=1;
65     for(int i=1;i<=n;++i) A[i]=mul(ksm(2,1ll*i*(i-1)/2),finv[i]);
66     Inv(A,B,len);
67     for(int i=1;i<=n;++i) C[i]=mul(ksm(2,1ll*i*(i-1)/2),finv[i-1]);
68     NTT(B,1,len),NTT(C,1,len);
69     for(int i=0;i<len;++i) B[i]=mul(B[i],C[i]);
70     NTT(B,-1,len);
71     printf("%d\n",mul(B[n],fac[n-1]));
72     return 0;
73 }

转载于:https://www.cnblogs.com/bztMinamoto/p/9748182.html

洛谷P4841 城市规划(多项式求逆)相关推荐

  1. (每日一题)P4841 [集训队作业2013]城市规划 (无向连通图计数)(普通生成函数 + 多项式求逆)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 每日一题(莫反 / 多项式 / 母函数 / 群论) 2021.4.14 生成函数 + 多项式求逆 Pr ...

  2. 洛谷P4233 射命丸文的笔记 【多项式求逆】

    题目链接 洛谷P4233 题解 我们只需求出总的哈密顿回路个数和总的强联通竞赛图个数 对于每条哈密顿回路,我们统计其贡献 一条哈密顿回路就是一个圆排列,有\(\frac{n!}{n}\)种,剩余边随便 ...

  3. 洛谷P4239 【模板】多项式求逆(加强版)(多项式求逆)

    传送门 咱用的是拆系数\(FFT\)因为咱真的不会三模数\(NTT\)-- 简单来说就是把每一次多项式乘法都改成拆系数\(FFT\)就行了 如果您还不会多项式求逆的左转->这里 顺带一提,因为求 ...

  4. 【洛谷P4233】— 射命丸文的笔记(竞赛图+多项式求逆)

    传送门 考虑强连通竞赛图哈密顿回路总数很好求 为(n−1)!2(n2)−n(n-1)!2^{{n\choose 2}-n}(n−1)!2(2n​)−n 现在问题是求强连通竞赛图数 设fif_ifi​为 ...

  5. #3456. 城市规划(生成函数,多项式求逆)

    #3456. 城市规划 设fnf_nfn​为nnn个点的的点的简单无向连通图数目,gng_ngn​为nnn个点的简单无向图个数(不要求联通). 对于gng_ngn​显然有gn=2n(n−1)2g_n ...

  6. 【BZOJ】3456: 城市规划 动态规划+多项式求逆

    [题意]求n个点的带标号无向连通图个数 mod 1004535809.n<=130000. [算法]动态规划+多项式求逆 [题解]设$g_n$表示n个点的无向图个数,那么显然 $$g_n=2^{ ...

  7. BZOJ 3456: 城市规划(dp+多项式求逆)

    传送门 解题思路 这道题就是求带标号的无向连通图个数,首先考虑\(O(n^2)\)的做法,设\(f_i\)表示有\(i\)个节点的无向连通图个数,那么考虑容斥,先把所有的无向图求出,即为\(2^{C( ...

  8. P4233-射命丸文的笔记【NTT,多项式求逆】

    正题 题目链接:https://www.luogu.com.cn/problem/P4233 题目大意 随机选择一条有哈密顿回路的nnn个点的竞赛图,求选出图的哈密顿回路的期望个数. 对于每个n∈[1 ...

  9. CF438E The Child and Binary Tree(有意思的生成函数 + 多项式求逆 + 多项式开方)

    整理的算法模板合集: ACM模板 点我看多项式全家桶(●^◡_◡◡​^●) CF438E The Child and Binary Tree 简单的黑题 首先我们发现模数为99824435399824 ...

最新文章

  1. window下实现在线预览功能
  2. 4句话让你明白什么是AI
  3. [Linux] 安装samba
  4. 像素测量工具_结构光视觉传感器的标定方式和测量原理
  5. 百度文库免费下载方法,亲测可用!建议收藏!
  6. uniapp 引入第三方包发起网络数据请求
  7. 云计算与大数据之间的关系
  8. Linux配置DNS域名解析服务
  9. 指尖江湖鸿蒙抽奖,剑网三:指尖江湖 李忘生竞技场攻略
  10. 从魔兽玩家到区块链领袖,V神是如何打造出区块链2.0代表的以太坊
  11. css如何将彩色图片变为黑白图片
  12. usaco3.2.7香甜的奶油
  13. linux xmanager使用教程,Xmanager企业版中各软件功能简介
  14. 如何做一个简单的XX(学生/图书馆)管理系统(二)
  15. depth peel_10个jQuery Page Peel插件
  16. 卷积神经网络模型搭建(水果识别项目)
  17. 案例-分析上市公司财务数据判断企业财务造假——基于R语言
  18. 虚拟时钟(Virtual clock)
  19. Linux初装gitlab初始默认密码
  20. android stk 源代码分析,Android源码分析--STK

热门文章

  1. python 子图大小_Python | 图的大小
  2. python创建矩阵_在Python中创建矩阵的Python程序
  3. 第1章 数据库系统概述
  4. 论ACM ICPC_Ruins He
  5. 软件工程---1.概述
  6. linux知识(一) 程序、进程与线程
  7. 【Verilog HDL】深入理解部分语法规则的本质
  8. 04-树4 是否同一棵二叉搜索树 (25 分)
  9. mysql myisam 锁机制_MySQL--MyISAM之锁机制
  10. CF 526F Max Mex(倍增求LCA+线段树路径合并)