[TJOI/HEOI2016] 求和 题解
为什么又是佳媛姐姐啊啊啊!
斯特林数在这道题中不好处理,直接拆开:
\]
\]
\]
单独考虑后半部分。设 \(f(i)=\dfrac{(-1)^i}{i!},g(i)=\dfrac{\sum\limits_{k=0}^n i^k}{i!}=\dfrac{[i\ne 1](\dfrac{i^{n+1}-1}{i-1})+[i=1](n+1)}{i!}\)
那么答案即为:
\]
NTT求解,时间复杂度 \(O(n\log n)\)。
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=3e5+5,p=998244353;
namespace NTT{
int rev[N],mx,k,m,qp,h;
struct dft{int fg[N];};
int qpow(int x,int y){
int re=1;
while(y){
if(y&1) re=re*x%p;
x=x*x%p,y>>=1;
}return re;
}void init(int n){
mx=1,k=0,rev[0]=0,h=m-1;
while(mx<=n) mx*=2,k++;
for(int i=0;i<mx;i++)
rev[i]=(rev[i>>1]>>1)|((i&1)<<(k-1));
qp=qpow(mx,p-2);
}void fmd(dft &a){
for(int i=m-1;i<mx;i++) if(a.fg[i])
a.fg[i%h]=(a.fg[i%h]+a.fg[i])%p,a.fg[i]=0;
}void ntt(dft &a,int fl){
for(int i=0;i<mx;i++)
if(i<rev[i]) swap(a.fg[i],a.fg[rev[i]]);
for(int i=1;i<mx;i*=2){
int om=qpow(fl?3:(p+1)/3,(p-1)/(i<<1));
for(int j=0,w=1;j<mx;j+=i*2,w=1)
for(int k=j;k<j+i;k++,w=w*om%p){
int x=a.fg[k],y=w*a.fg[k+i]%p;
a.fg[k]=(x+y)%p,a.fg[k+i]=(x-y+p)%p;
}
}if(fl) return;
for(int i=0;i<mx;i++)
a.fg[i]=a.fg[i]*qp%p;
}
}using namespace NTT;
int n;dft f,g;
signed main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>n,init(n*2+1);
for(int i=0,sum,jc=1;i<=n;i++,jc=jc*i%p){
f.fg[i]=qpow(jc,p-2)*(1-i%2*2);
g.fg[i]=(qpow(i,n+1)-1)*qpow((i-1)*jc%p,p-2)%p;
if(i==1) g.fg[i]=(n+1)*jc%p;
}ntt(f,1),ntt(g,1);
for(int i=0;i<mx;i++)
f.fg[i]=f.fg[i]*g.fg[i]%p;
ntt(f,0);int ans=0;
for(int i=0,jc=1;i<=n;i++,jc=jc*i%p)
ans=(ans+qpow(2,i)*jc%p*f.fg[i])%p;
cout<<ans;
return 0;
}
[TJOI/HEOI2016] 求和 题解的更多相关文章
- 【BZOJ4555】[TJOI&HEOI2016]求和 斯特林数+NTT
Description 在2016年,佳媛姐姐刚刚学习了第二类斯特林数,非常开心. 现在他想计算这样一个函数的值: S(i, j)表示第二类斯特林数,递推公式为: S(i, j) = j ∗ S(i ...
- loj2058 「TJOI / HEOI2016」求和 NTT
loj2058 「TJOI / HEOI2016」求和 NTT 链接 loj 思路 \[S(i,j)=\frac{1}{j!}\sum\limits_{k=0}^{j}(-1)^{k}C_{j}^{k ...
- loj#2054. 「TJOI / HEOI2016」树
题目链接 loj#2054. 「TJOI / HEOI2016」树 题解 每次标记覆盖整棵字数,子树维护对于标记深度取max dfs序+线段树维护一下 代码 #include<cstdio> ...
- 【BZOJ】4555: [Tjoi2016&Heoi2016]求和 排列组合+多项式求逆 或 斯特林数+NTT
[题意]给定n,求Σi=0~nΣj=1~i s(i,j)*2^j*j!,n<=10^5. [算法]生成函数+排列组合+多项式求逆 [题解]参考: [BZOJ4555][Tjoi2016& ...
- 【BZOJ 4555】 4555: [Tjoi2016&Heoi2016]求和 (NTT)
4555: [Tjoi2016&Heoi2016]求和 Time Limit: 40 Sec Memory Limit: 128 MBSubmit: 315 Solved: 252 Des ...
- [BZOJ4555 TJOI2016 HEOI2016 求和]
第一篇博客,请大家多多关照.(鞠躬 BZOJ4555 TJOI2016 HEOI2016 求和 题意: 给定一个正整数\(n\)(\(1\leqq n \leqq100000\)),求: \[ ...
- 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是第二类斯特林 ...
- 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是第二类斯特林 ...
- [HEOI2016]求和 sum
[HEOI2016]求和 sum 标签: NTT cdq分治 多项式求逆 第二类斯特林数 Description 求\[\sum_{i=0}^n\sum_{j=0}^i S(i,j)×2^j×(j!) ...
- 「TJOI / HEOI2016」字符串
「TJOI / HEOI2016」字符串 题目描述 佳媛姐姐过生日的时候,她的小伙伴从某东上买了一个生日礼物.生日礼物放在一个神奇的箱子中.箱子外边写了一个长为 \(n\) 的字符串 \(s\),和 ...
随机推荐
- Vue.js 数据绑定
1.标签内容绑定 双括号语法:使用 {{}} 将变量包裹起来,vue会将变量的值解析为普通文本,而非 HTML 代码 <div>{{msg}}</div> <div> ...
- OkHttp实现延时重试
本文主要应用了OkHttp的Interceptor来实现自定义重试次数 虽然OkHttp自带retryOnConnectionFailure(true)方法可以实现重试,但是不支持自定义重试次数,所以 ...
- Java代码打成jar后 classgetClassLoadergetResource("")返回为null
用maven打成jar包后,Main.class.getClassLoader().getResource("")为null. 示例: public static void mai ...
- 【转载】Spring Cloud Gateway排错、调试技巧总结
http://www.imooc.com/article/290824 本文总结Spring Cloud Gateway的排错.调试技巧.欢迎留言补充! 第一式:Actuator监控端点 借助Actu ...
- Win10正式专业版激活方法
首先,我们先查看一下Win10正式专业版系统的激活状态: 点击桌面左下角的"Windows"按钮,从打开的扩展面板中依次点击"设置"-"更新和安全 ...
- Kubernetes系列(一) - kubernetes入门基本概念
目录 1. 基本概念 1.1 什么是 Kubernetes 集群 1.2 Kubernetes集群资源组成: 1.3 无状态和有状态的区别 1.3.1 无状态服务 1.3.2 有状态服务 2. Kub ...
- asp.net mvc中换肤机制类库 ThemedViewEngines
制作blog系统或者通用cms系统的时候,我们经常会用到Theme功能.asp.net mvc中的一种实现方式,是继承实现RazorViewEngine即可. 这是在GitHub中找到的一个示例:ht ...
- Shapefile代码示例
Shapefile代码示例 1. 读取Shapefile文件 1.1 实现思路 graph TD A[查找必要文件] --> B[获取文件编码] B --> C[打开图层] C --> ...
- 使用R语言可视化地图数据
在科研工作中,经常会遇到需要在地图上展示数据的情况,今天分享一下如何使用R语言可视化地图数据 # 先安装和导入R包,这里使用了本地地图数据,所以只导入maps包即可 # install.package ...
- 冷水机超频AMD 2600X 4.5G
整个测试大概持续了一个半小时,期间水温保持在2度左右(±1摄氏度).后来开始冷凝,而且超频也到了4.5G瓶颈,所以停了下来. 全核4.4G过R154.5G过CPU-Z认证(点击查看)温度表现,一般吧. ...