题目

\(S(i,j)\)表示第二类斯特林数,求:
\[
f(n)=\sum _{i=0}^n\sum _{j=0}^iS(i,j)*2^j*j!
\]

分析

公式推理很简单,关键是用到了第二类斯特林数的通项公式和组合数展开的方法。
\[
\begin{aligned}
f(n)&=\sum _{i=0}^n\sum _{j=0}^iS(i,j)*2^j*j! \\
&=\sum _{i=0}^n\sum _{j=0}^n \frac{1}{j!}\sum _{k=0}^j (-1)^kC_j^k(j-k)^i*2^j*j! \\
&=\sum _{j=0}^n \frac{1}{j!}*2^j*j!\sum _{j=0}^n\sum _{k=0}^j (-1)^k \frac{j!}{k!(j-k)!} (j-k)^i \\
&=\sum _{j=0}^n 2^j*j!\sum _{k=0}^j\frac{(-1)^k}{k!}\sum _{i=0}^n\frac{(j-k)^i}{(j-k)!} \\
&=\sum _{j=0}^n 2^j*j!\sum _{k=0}^j\frac{(-1)^k}{k!}\frac{(j-k)^{n+1}-1}{(j-k)!(j-k-1)} \\
\end{aligned}
\]
令:
\[
\begin{aligned}
B(x)=\frac{(-1)^x}{x!} \\
C(x)=\frac{x^{n+1}-1}{x!(x-1)}
\end{aligned}
\]
则有:
\[
\begin{aligned}
f(n)=\sum _{j=0}^n 2^j*j!\sum _{k=0}^jB(k)C(k-j)
\end{aligned}
\]
一个卷积的形式,直接用NTT求解即可。这里要注意的是,\(C(0)=1\),因为我们在这里定义\(0^0=1\)。

代码

NTT写起来很简单,但有几个地方容易错。一定要注意把\(n\)化成整二进制的时候,\(M\)要大于\(2n\),尽管\(n\)可能本身是\(2\)的整数次幂。例如\(n=1\),这时\(M\)不能仅仅取到\(2\),而要取到\(4\)。
``` c++

include

include

include

using namespace std;
typedef long long giant;
const giant q=998244353;
const giant g=3;
const giant ig=332748118;
giant read() {
giant x=0,f=1;
char c=getchar();
for (;!isdigit(c);c=getchar()) if (c=='-') f=-1;
for (;isdigit(c);c=getchar()) x=x10+c-'0';
return x
f;
}
const giant maxn=(1<<18)+1;
const giant maxj=19;
giant a[maxn],b[maxn],c[maxn],M,xj,f[maxn],wn[maxj][2];
giant mi(giant x,giant y) {
giant ret=1;
while (y) {
if (y&1) (ret=x)%=q;
y>>=1,(x
=x)%=q;
}
return ret;
}

bzoj4555-求和的更多相关文章

  1. bzoj4555: 求和sum 快速傅立叶变换

    题目大意 给定\(S(n,m)\)表示第二类斯特林数,定义函数\(f(n)\) \[f(n) = \sum_{i=0}^n\sum_{j=0}^iS(i,j)*2^j*(j!)\] 给定正整数\(n, ...

  2. [HEOI2016/TJOI2016][bzoj4555] 求和 [斯特林数+NTT]

    题面 传送门 思路 首先,我们发现这个式子中大部分的项都和$j$有关(尤其是后面的$2^j\ast j!$),所以我们更换一下枚举方式,把这道题的枚举方式变成先$j$再$i$ $f(n)=\sum_{ ...

  3. BZOJ4555求和(cdq分治+NTT)

    题意: 输出f(n)对998244353(7 × 17 × 223 + 1)取模的结果.1 ≤ n ≤ 100000 其中S(i,j)是第二类Stirling数,即有i个球,丢到j个盒子中,要求盒子不 ...

  4. 【BZOJ4555】求和(第二类斯特林数,组合数学,NTT)

    [BZOJ4555]求和(第二类斯特林数,组合数学,NTT) 题面 BZOJ 题解 推推柿子 \[\sum_{i=0}^n\sum_{j=0}^iS(i,j)·j!·2^j\] \[=\sum_{i= ...

  5. 【BZOJ4555】求和(多种解法混合版本)

    [BZOJ4555]求和(多种解法混合版本) 题面 BZOJ 给定\(n\),求 \[f(n)=\sum_{i=0}^{n}\sum_{j=0}^{i}S(i,j)\times 2^j \times ...

  6. [BZOJ4555][TJOI2016&HEOI2016]求和(分治FFT)

    4555: [Tjoi2016&Heoi2016]求和 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 525  Solved: 418[Sub ...

  7. [BZOJ4555 TJOI2016 HEOI2016 求和]

    ​ 第一篇博客,请大家多多关照.(鞠躬 BZOJ4555 TJOI2016 HEOI2016 求和 题意: ​ 给定一个正整数\(n\)(\(1\leqq n \leqq100000\)),求: \[ ...

  8. 【bzoj4555】[Tjoi2016&Heoi2016]求和 NTT

    题目描述 在2016年,佳媛姐姐刚刚学习了第二类斯特林数,非常开心. 现在他想计算这样一个函数的值: S(i, j)表示第二类斯特林数,递推公式为: S(i, j) = j ∗ S(i − 1, j) ...

  9. 【BZOJ4555】【TJOI2016】【HEOI2016】求和

    题目 传送门 解法 我们可以用容斥来求第二类斯特林数 我们知道, 第二类斯特林数\(S(n, k)\)是\(n\)个元素放进\(k\)个无标号的盒子里, 不可以含有空的. 于是我们可以考虑可以含有空的 ...

  10. 【bzoj4555】[Tjoi2016&Heoi2016]求和(NTT+第二类斯特林数)

    传送门 题意: 求 \[ f(n)=\sum_{i=0}^n\sum_{j=0}^i\begin{Bmatrix} i \\ j \end{Bmatrix}2^jj! \] 思路: 直接将第二类斯特林 ...

随机推荐

  1. Node.js Express+Mongodb 项目实战

    Node.js Express+Mongodb 项目实战 这是一个简单的商品管理系统的小项目,包含的功能还算挺全的,项目涵盖了登录.注册,图片上传以及对商品进行增.删.查.改等操作,对于新手来说是个很 ...

  2. sublime_text3常用操作与快捷键

    1.编辑多列 按鼠标滚轮进行多列选中 键盘ctrl+alt+↓进行多行选中操作 2.快捷键 ctrl+H:替换(F为经典的搜索) ctrl+G:跳到指定行 ctrl+D:选词,连续按选中下面匹配的词, ...

  3. DSP5509的XF实验-第一篇

    1. 使用大道科技的EASY-DSP5509开发板,测试第一个例程,DSP_easy5509\Code-Easy5509\EX01_XF\XF 2. 直接编译,报出错误,在Problems窗口错误指示 ...

  4. oracle 建立一个视图,然后授权其他用户访问

    grant select on V_LIC_ENTRY_HZ_STATUS to ielicr2013; create or replace view dept_sum_vw (name,minsal ...

  5. 解决CentOS下可以ping通ip ping不通域名

    现象:1. ping不通域名,比如 www.qq.com 2. 可以ping通ip,比如 61.135.157.156 分析:1. 查看DNS配置文件 /etc/resolve.conf, 里面的服务 ...

  6. web自动化原理揭秘

    做过两年自动化测试的小伙伴说web自动化测试真的不难,无非就是一些浏览器操作,页面元素操作,常规的情况很容易处理,再学一学特殊元素的处理,基本就能应付项目的测试了. 这个话倒没错,但是真正要学好自动化 ...

  7. centos下testlink的部署(基于xampp)

    1. sudu -i 切换root用户      cd /opt切换到opt目录下(在linux下默认的下载文件目录在opt下) 执行命令下载xampp:      https://sourcefor ...

  8. 【SpringCloud】 第九篇: 服务链路追踪(Spring Cloud Sleuth)

    前言: 必需学会SpringBoot基础知识 简介: spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选. ...

  9. Linux命令应用大词典-第29章 SELinux管理

    29.1 sestaus:显示SElinux的状态 29.2 getenforce:显示当前SELinux的应用模式 29.3 setenforce:修改SELinux的应用模式 29.4 getfa ...

  10. 【icon】 图标组件说明

    小程序默认了几种类型图标,其组件原型如下: <icon type="[success | success_no_circle | info | warn | waiting | can ...