bzoj4555(多项式求逆解法)
//和以前写的fft不太一样,可能是因为要取模??
#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
const int mod=,maxn=;
int mx,n,m,inv[maxn],a[maxn],b[maxn],c[maxn],na[maxn],w[][maxn],pos[maxn];
int qmi(int x,int y){
int t=;
for(;y;y>>=,x=(ll)x*x%mod)if(y&)t=(ll)t*x%mod;
return t;
}
void pre(int n){
int i,x=qmi(,(mod-)/n);//以前这里的取值都和mod无关啊,取了模了不一样了?
w[][]=w[][]=;
for(int i=;i<n;++i)w[][i]=w[][n-i]=(ll)w[][i-]*x%mod;
for(int i=;i<n;++i){
pos[i]=pos[i>>]>>;
if(i&)pos[i]|=n>>;
}
}
void fnt(int *a,int n,int flag){
if(n>mx)mx=n;
int i,j,k,l,x,u,v;
for(i=;i<n;++i)na[pos[i]]=a[i];
memcpy(a,na,sizeof(int)*n);
for(k=;k<n;k<<=){
for(i=,x=n/k>>;i<n;i+=k<<)
for(j=i,l=;j<i+k;++j,l+=x){
u=a[j];v=(ll)a[j+k]*w[flag][l]%mod;
a[j]=(u+v)%mod;a[j+k]=(u-v+mod)%mod;
}
}
if(flag){
x=qmi(n,mod-);
for(i=;i<n;++i)a[i]=(ll)a[i]*x%mod;
}
}
void solve_inv(int *a,int *b,int n){
if(n==){b[]=qmi(a[],mod-);return;}
int i;solve_inv(a,b,n>>);
memcpy(c,a,sizeof(int)*n);memset(c+n,,sizeof(int)*n);
pre(n<<);
fnt(b,n<<,);fnt(c,n<<,);
for(i=;i<(n<<);++i)b[i]=(-(ll)b[i]*c[i]%mod+mod)*b[i]%mod;
fnt(b,n<<,);memset(b+n,,sizeof(int)*n);
}
int main(){
int i,n;scanf("%d",&n);
inv[]=inv[]=a[]=m=;
while(m<=n)m<<=;
for(int i=;i<=n;++i)inv[i]=mod-(ll)inv[mod%i]*(mod/i)%mod;
for(int i=;i<=n;++i)inv[i]=(ll)inv[i-]*inv[i]%mod;
for(int i=;i<=n;++i)a[i]=((mod-inv[i])<<)%mod;
solve_inv(a,b,m);
int ans=b[n];
for(int i=n;i;--i)ans=((ll)ans*i+b[i-])%mod;
printf("%d\n",ans);
return ;
}
学习地址:http://blog.csdn.net/lych_cys/article/details/51512278
bzoj4555(多项式求逆解法)的更多相关文章
- 【BZOJ】4555: [Tjoi2016&Heoi2016]求和 排列组合+多项式求逆 或 斯特林数+NTT
[题意]给定n,求Σi=0~nΣj=1~i s(i,j)*2^j*j!,n<=10^5. [算法]生成函数+排列组合+多项式求逆 [题解]参考: [BZOJ4555][Tjoi2016& ...
- luogu P4725 多项式对数函数 (模板题、FFT、多项式求逆、求导和积分)
手动博客搬家: 本文发表于20181125 13:25:03, 原地址https://blog.csdn.net/suncongbo/article/details/84487306 题目链接: ht ...
- hdu 5730 Shell Necklace [分治fft | 多项式求逆]
hdu 5730 Shell Necklace 题意:求递推式\(f_n = \sum_{i=1}^n a_i f_{n-i}\),模313 多么优秀的模板题 可以用分治fft,也可以多项式求逆 分治 ...
- BZOJ 4555: [Tjoi2016&Heoi2016]求和 [分治FFT 组合计数 | 多项式求逆]
4555: [Tjoi2016&Heoi2016]求和 题意:求\[ \sum_{i=0}^n \sum_{j=0}^i S(i,j)\cdot 2^j\cdot j! \\ S是第二类斯特林 ...
- NTT+多项式求逆+多项式开方(BZOJ3625)
定义多项式$h(x)$的每一项系数$h_i$,为i在c[1]~c[n]中的出现次数. 定义多项式$f(x)$的每一项系数$f_i$,为权值为i的方案数. 通过简单的分析我们可以发现:$f(x)=\fr ...
- Re.多项式求逆
前言 emmm暂无 多项式求逆目的 顾名思义 就是求出一个多项式的摸xn时的逆 给定一个多项式F(x),请求出一个多项式G(x),满足F(x)∗G(x)≡1(modxn),系数对998244353取模 ...
- BZOJ 3456: 城市规划 与 多项式求逆算法介绍(多项式求逆, dp)
题面 求有 \(n\) 个点的无向有标号连通图个数 . \((1 \le n \le 1.3 * 10^5)\) 题解 首先考虑 dp ... 直接算可行的方案数 , 容易算重复 . 我们用总方案数减 ...
- 洛谷P4841 城市规划(生成函数 多项式求逆)
题意 链接 Sol Orz yyb 一开始想的是直接设\(f_i\)表示\(i\)个点的无向联通图个数,枚举最后一个联通块转移,发现有一种情况转移不到... 正解是先设\(g(n)\)表示\(n\)个 ...
- LOJ2527 HAOI2018 染色 容斥、生成函数、多项式求逆
传送门 调了1h竟然是因为1004535809写成了998244353 "恰好有\(K\)种颜色出现了\(S\)次"的限制似乎并不容易达到,考虑容斥计算. 令\(c_j\)表示强制 ...
随机推荐
- 十六进制颜色值和rgb颜色值互相转换
在之前的一篇文章<将16进制的颜色转为rgb颜色>中,曾经写过将16进制的颜色转换为rgb颜色. 当然了,今天再看,还是有很多可以优化的地方,所以对之前的代码重构了一遍,并且同时写了一个反 ...
- svn Advanced
1.Eclipse last 1.Eclipse 安装subversive插件: 安装连接器: 打开视图"SVN Repositories": 创建“资源库位置”: 配置全局范围文 ...
- django之Models和ORM
ORM Object Relational Mapping,简称ORM,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久 ...
- openvpn通过ldap或ad统一认证解决方案思路分享
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://oldboy.blog.51cto.com/2561410/986933 缘起:成 ...
- 【FZSZ2017暑假提高组Day1】华容道游戏
[问题描述] 华容道是一种有趣的滑块游戏,大概是下面这个样子的. 游戏局面由一个2*2的曹操滑块,五个2*1的蜀将滑块(横竖是不定的).四个1*1的小兵滑块以及两个空的位置构成,玩家需要利用空的位子移 ...
- python杂记一
1. 输出CSV文件 用python输出csv文件不难,可是MS office excel和WPS 对输出的CSV文件打开规则不一样. WPS可以支持CSV以'\t'为分隔符,打开文件直接写内容 MS ...
- 百度分享不支持Https的解决方案--本地化
站点自从开启 https 之后 ,百度分享就不能用了!但是又寻找不到类似百度分享的替代品.. 怎么办呢?要如何解决 百度分享不支持https的问题呢, 跟着博主动动手,让你百度分享仍然能在https下 ...
- tfs填坑那些事
1.csdn下载 安装(步1:装 步2:激活 步3:配置数据库之类 选择完全配置)激活(win7能出来,win10不出来) 注意 tfs服务开启,,代理服务开启 2.选择敏捷模板 3.无法新建项目, ...
- css之标签选择器
标签(空格分隔): 标签选择器 选择器定义: 在一个HTML页面中会有很多很多的元素,不同的元素可能会有不同的样式,某些元素又需要设置相同的样式,选择器就是用来从HTML页面中查找特定元素的,找到元素 ...
- Linux redhat 7 进入单用户模式
redhat 7 进入单用户模式修复系统故障 1.启动机器,grub界面选择第一个,按e 2.往下翻,找到Linux16 开头的那一行 3.将ro改为"rw init=/sysroot/b ...