正题

题目链接:https://www.luogu.com.cn/problem/P4091


题目大意

给出nnn,求
∑i=0n∑j=0i{ij}2jj!\sum_{i=0}^n\sum_{j=0}^i\begin{Bmatrix}i\\j\end{Bmatrix}2^jj!i=0∑n​j=0∑i​{ij​}2jj!


解题思路

看题解才知道2jj!2^jj!2jj!对这nlog⁡nn\log nnlogn做法没有任何意义,卡了好久。
首先斯特林数的通项公式是{nm}=1m!∑k=0m(−1)k(mk)(m−k)n\begin{Bmatrix}n\\m\end{Bmatrix}=\frac{1}{m!}\sum_{k=0}^m(-1)^k\binom{m}{k}(m-k)^n{nm​}=m!1​k=0∑m​(−1)k(km​)(m−k)n
⇒∑k=0m(−1)k(m−k)nk!(m−k)!\Rightarrow \sum_{k=0}^m\frac{(-1)^k(m-k)^n}{k!(m-k)!}⇒k=0∑m​k!(m−k)!(−1)k(m−k)n​

提到这个式子来(因为如果j>ij>ij>i就是000所以直接不管这个限制)
∑i=0n∑j=0n2jj!∑k=0j(−1)k(j−k)nk!(j−k)!\sum_{i=0}^n\sum_{j=0}^n2^jj!\sum_{k=0}^j\frac{(-1)^k(j-k)^n}{k!(j-k)!}i=0∑n​j=0∑n​2jj!k=0∑j​k!(j−k)!(−1)k(j−k)n​
然后把枚举iii的那层丢到分数那里
∑j=0n2jj!∑k=0j(−1)k∑i=0n(j−k)ik!(j−k)!\sum_{j=0}^n2^jj!\sum_{k=0}^j\frac{(-1)^k\sum_{i=0}^{n}(j-k)^i}{k!(j-k)!}j=0∑n​2jj!k=0∑j​k!(j−k)!(−1)k∑i=0n​(j−k)i​
然后这个后面式子就可以卷积了,定义F(x)=(−1)xx!,G(x)=∑i=0nxnx!F(x)=\frac{(-1)^x}{x!},G(x)=\frac{\sum_{i=0}^nx^n}{x!}F(x)=x!(−1)x​,G(x)=x!∑i=0n​xn​
然后GGG通项公式一下就是G(x)=xn+1−1(x−1)x!G(x)=\frac{x^{n+1}-1}{(x-1)x!}G(x)=(x−1)x!xn+1−1​
时间复杂度O(nlog⁡n)O(n\log n)O(nlogn)


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=6e5+10,P=998244353;
struct poly{ll a[N],n;
}G,F;
ll n,ans,fac[N],inv[N],fnv[N],r[N];
ll power(ll x,ll b){ll ans=1;while(b){if(b&1)ans=ans*x%P;x=x*x%P;b>>=1;}return ans;
}
void NTT(ll *f,ll n,ll op){for(ll i=0;i<n;i++)if(r[i]<i)swap(f[i],f[r[i]]);for(ll p=2;p<=n;p<<=1){ll len=p>>1,tmp=power(3,(P-1)/p);if(op==-1)tmp=power(tmp,P-2);for(ll k=0;k<n;k+=p){ll buf=1;for(ll i=k;i<k+len;i++){ll tt=buf*f[i+len]%P;f[i+len]=(f[i]-tt+P)%P;f[i]=(f[i]+tt)%P;buf=buf*tmp%P;}}}if(op==-1){ll invn=power(n,P-2);for(ll i=0;i<n;i++)f[i]=f[i]*invn%P;}return;
}
void mul(poly &a,poly &b){ll n=1;while(n<=a.n+b.n)n<<=1;for(ll i=0;i<n;i++)r[i]=(r[i>>1]>>1)^((i&1)?(n>>1):0);NTT(a.a,n,1);NTT(b.a,n,1);for(ll i=0;i<n;i++)a.a[i]=a.a[i]*b.a[i]%P;NTT(a.a,n,-1);return;
}
int main()
{scanf("%lld",&n);fac[1]=fac[0]=fnv[0]=inv[1]=1;for(ll i=2;i<=n;i++)inv[i]=P-(P/i)*inv[P%i]%P;for(ll i=1;i<=n;i++)fac[i]=fac[i-1]*i%P,fnv[i]=inv[i]*fnv[i-1]%P;F.a[0]=G.a[0]=1;F.a[1]=P-1;G.a[1]=n+1;fnv[0]=0;for(ll i=2;i<=n;i++){F.a[i]=(i&1)?(P-fnv[i]):fnv[i];G.a[i]=(power(i,n+1)-1)*inv[i-1]%P*fnv[i]%P;}G.n=F.n=n;mul(G,F);for(ll i=0,pw=1;i<=n;i++){(ans+=G.a[i]*pw%P*fac[i]%P)%=P;pw=pw*2%P;}printf("%lld\n",ans);return 0;
}

P4091-[HEOI2016/TJOI2016]求和【斯特林数,NTT】相关推荐

  1. 洛谷 P4091 [HEOI2016/TJOI2016]求和 任意模数fft

    题目描述 在2016年,佳媛姐姐刚刚学习了第二类斯特林数,非常开心. 现在他想计算这样一个函数的值: f(n)=∑ni=0∑ij=0S(i,j)×2j×(j!) f ( n ) = ∑ i = 0 n ...

  2. BZOJ 4555 Luogu P4091 [HEOI2016/TJOI2016]求和 (第二类斯特林数)

    题目链接 (lugou) https://www.luogu.org/problem/P4091 (bzoj) https://www.lydsy.com/JudgeOnline/problem.ph ...

  3. [HEOI2016/TJOI2016]求和(第二类斯特林数)

    题目 [HEOI2016/TJOI2016]求和 关于斯特林数与反演的更多姿势\(\Longrightarrow\)点这里 做法 \[\begin{aligned}\\ Ans&=\sum\l ...

  4. BJ模拟 生日礼物(斯特林数+NTT)

    Description 今天是Jane的生日.Alice和Bob都有一些糖果,于是这两个人就去买一些白色的盒子去包装这些糖果作为Jane的生日礼物.他们将随机地把这些盒子分成两堆,一堆给Alice,一 ...

  5. [HEOI2016/TJOI2016]求和

    https://www.zybuluo.com/ysner/note/1288083 题面 求\[\sum_{i=0}^n\sum_{j=0}^iS(i,j)*2^j*j!\] \(n\leq10^5 ...

  6. BZOJ4555[HEOI2016/TJOI2016]求和

    题目链接 洛谷 BZOJ 前置知识 第二类斯特林数 含义 \(S_n^m\)表示将\(n\)个互不相同的元素划分为\(m\)个非空集合的方案数 递推式 \[ S_n^m = S_{n - 1}^{m ...

  7. 【洛谷2791】 幼儿园篮球题 第二类斯特林数+NTT

    求 \(\sum_{i=0}^{k}\binom{m}{i}\binom{n-m}{k-i}i^L\) \((1\leqslant n,m\leqslant 2\times 10^7,1\leqsla ...

  8. bzoj5093 图的价值【第二类斯特林数+NTT】

    解题思路: 考虑直接枚举每个点连的边,图中其余点之间随便连,那么直接推式子: ans=n∗2C2n−1∑i=0n−1Cin−1ikans=n*2^{C_{n-1}^2}\sum\limits_{i=0 ...

  9. 信奥中的数学:斯特林数、卡特兰数

    P1287 盒子与球(球不同 盒不同 不允许有空盒) 盒子与球 - 洛谷 第二类斯特林数总结 第二类斯特林数总结 - _zjz 的博客 - 洛谷博客 P4091 [HEOI2016/TJOI2016] ...

最新文章

  1. 转 sklearn: TfidfVectorizer 中文处理及一些使用参数
  2. 无法上外网, ping网关ping不通的解决——arp命令
  3. 详解线程本地变量ThreadLocal
  4. 贴片电阻代号对照表图_贴片二极管的检测技巧
  5. 一条线一万美元的故事误导了你多少年
  6. 从前,小夕种了一棵树
  7. C++学习之路 | PTA乙级—— 1034 有理数四则运算 (20 分)(精简)
  8. 小程序真机调试访问不了接口_24小时从0到1开发阴阳师小程序
  9. OpenShift 4 - 了解Secret
  10. 集成产品开发团队的管理和决策
  11. 通配符星号(*)和问号(?)的区别
  12. 递归大总结之斐波那契
  13. 【开源系列】三国演义LBS (二)游戏策划案
  14. 虚拟现实技术虚拟校园解决方案
  15. 软件测试用例朋友圈发表功能,微信发朋友圈测试用例
  16. 解决方案|致拓T8数字化ERP
  17. 计算机屏幕截图按什么键,电脑按什么键自由截图
  18. 对称矩阵特征向量正交推导
  19. 安装 adobe 软件 photoshop 遇到 81错误 mac
  20. 凯撒密码加解密及破解实现原理

热门文章

  1. 自拟计算机作文100字,我的电脑作文100字五篇
  2. java main 声明_Java中main方面面试题
  3. java jdbc 删除_java使用jdbc实现各种类型添加删除修改数据
  4. python中abc属于字符串吗_在Python中,字符串s = 'abc',那么执行表达式s+'d'之后,s的打印结果是( )。...
  5. android loading封装_我们经常用的Loading动画居然还有这种姿势
  6. vuex保存用户信息_Vuex状态管理
  7. [MyBatisPlus]入门案例
  8. 洛谷 P1162 填涂颜色-dfs染色法
  9. Dollar Dayz POJ - 3181(动态规划+大数高低位分离输出)
  10. github 检查代码质量_Android(8): 代码质量检查