博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 4555 [Tjoi2016&Heoi2016]求和
阅读量:6069 次
发布时间:2019-06-20

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

题目链接

题解

f(n)=i=0nj=0iS(i,j)×2j×j!=i=0nj=0nS(i,j)×2j×j!=i=0nj=0n2jk=0j(1)k(jk)(jk)i=i=0nj=0n2j×j!k=0j(1)kk!×(jk)i(jk)!=j=0n2j×j!k=0j(1)kk!×ni=0(jk)i(jk)!(1)(2)(1)(3)(2)(1)f(n)=∑i=0n∑j=0iS(i,j)×2j×j!(2)=∑i=0n∑j=0nS(i,j)×2j×j!(1)=∑i=0n∑j=0n2j∑k=0j(−1)k(jk)(j−k)i(3)=∑i=0n∑j=0n2j×j!∑k=0j(−1)kk!×(j−k)i(j−k)!(2)=∑j=0n2j×j!∑k=0j(−1)kk!×∑i=0n(j−k)i(j−k)!

其中(1)(1)步骤使用了第二类斯特林数的展开式S(i,j)=1j!jk=0(1)k(jk)(jk)iS(i,j)=1j!∑k=0j(−1)k(jk)(j−k)i(2)(2)步骤是一个卷积形式,模数比较特殊可以用NTT优化,ni=0(jk)i∑i=0n(j−k)i很明显是一个等比数列求和。

代码

#include 
#include
int read(){ int x=0,f=1; char ch=getchar(); while((ch<'0')||(ch>'9')) { if(ch=='-') { f=-f; } ch=getchar(); } while((ch>='0')&&(ch<='9')) { x=x*10+ch-'0'; ch=getchar(); } return x*f;}const int maxn=200000;const int maxm=340000;const int mod=998244353;const int G=3;int quickpow(int a,int b,int m){ int res=1; while(b) { if(b&1) { res=1ll*res*a%m; } a=1ll*a*a%m; b>>=1; } return res;}int add(int x,int y,int m){ int res=x+y; if(res>=m) { res-=m; } return res;}int minus(int x,int y,int m){ int res=x-y; if(res<0) { res+=m; } return res;}int rev[maxm+10],a[maxm+10],b[maxm+10],ans[maxm+10];int getrev(int n){ int m=1,len=0; while(m<=n) { m<<=1; ++len; } for(int i=1; i
>1]>>1)+((i&1)<<(len-1)); } return m;}int fft(int *s,int len){ for(int i=0; i
>1); ++k) { int x=s[j+k],y=1ll*g*s[j+k+(i>>1)]%mod; s[j+k]=add(x,y,mod); s[j+k+(i>>1)]=minus(x,y,mod); g=1ll*g*gn%mod; } } } return 0;}int main(){ int n=read(); a[0]=1; int v=1; for(int i=1; i<=n; ++i) { v=1ll*minus(0,v,mod)*quickpow(i,mod-2,mod)%mod; a[i]=v; } b[0]=1; v=1; for(int i=1; i<=n; ++i) { v=1ll*v*quickpow(i,mod-2,mod)%mod; b[i]=1ll*minus(1,quickpow(i,n+1,mod),mod)*quickpow(minus(1,i,mod),mod-2,mod)%mod*v%mod; } b[1]=n+1; int m=getrev(n<<1); fft(a,m); fft(b,m); for(int i=0; i

转载于:https://www.cnblogs.com/Canopus-wym/p/10376153.html

你可能感兴趣的文章
阿里云公共镜像、自定义镜像、共享镜像和镜像市场的区别 ...
查看>>
shadowtunnel v1.7 发布:新增上级负载均衡支持独立密码
查看>>
IdleHandler,页面启动优化神器
查看>>
Java线程:什么是线程
查看>>
mysql5.7 创建一个超级管理员
查看>>
【框架整合】Maven-SpringMVC3.X+Spring3.X+MyBatis3-日志、JSON解析、表关联查询等均已配置好...
查看>>
要想成为高级Java程序员需要具备哪些知识呢?
查看>>
带着问题去学习--Nginx配置解析(一)
查看>>
onix-文件系统
查看>>
java.io.Serializable浅析
查看>>
我的友情链接
查看>>
多线程之线程池任务管理通用模板
查看>>
CSS3让长单词与URL地址自动换行——word-wrap属性
查看>>
CodeForces 580B Kefa and Company
查看>>
开发规范浅谈
查看>>
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming
查看>>
鼠标增强软件StrokeIt使用方法
查看>>
本地连接linux虚拟机的方法
查看>>
某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
查看>>
BABOK - 企业分析(Enterprise Analysis)概要
查看>>