【NTT】loj#6261. 一个人的高三楼
去年看过t老师写这题博客;以为是道神仙题
题目大意
求一个数列的$k$次前缀和。$n\le 10^5$.
题目分析
【计数】cf223C. Partial Sums 加强版。注意到最后的式子是$f_i=\sum\limits_{j+k=i}pre_j a_k$的样子,因此在预处理$pre_j$之后就是卷积的板子了。
#include<bits/stdc++.h>
#define MO 998244353
const int maxn = ;
const int inv3 = ; int n,len,dt;
int cov[maxn],a[maxn],f[maxn],pre[maxn],fac[maxn],inv[maxn];
long long k; int qmi(int a, int b)
{
int ret = ;
for (; b; b>>=, a=1ll*a*a%MO)
if (b&) ret = 1ll*ret*a%MO;
return ret;
}
void NTT(int *a, int opt)
{
for (int i=; i<len; i++)
if (i < cov[i]) std::swap(a[i], a[cov[i]]);
for (int i=; i<len; i<<=)
{
int Wn = qmi(, (MO-)/(i<<));
if (opt==-) Wn = qmi(inv3, (MO-)/(i<<));
for (int j=, p=i<<; j<len; j+=p)
{
int w = ;
for (int k=; k<i; k++, w=1ll*w*Wn%MO)
{
int valx = a[j+k], valy = 1ll*w*a[i+j+k]%MO;
a[j+k] = (valx+valy)%MO, a[i+j+k] = (valx-valy+MO)%MO;
}
}
}
if (opt==-){
int inv = qmi(len, MO-);
for (int i=; i<len; i++) a[i] = 1ll*a[i]*inv%MO;
}
}
void init()
{
pre[] = fac[] = fac[] = inv[] = inv[] = ;
for (int i=; i<=n; i++)
fac[i] = 1ll*fac[i-]*i%MO,
inv[i] = MO-1ll*(MO/i)*inv[MO%i]%MO;
for (int i=; i<=n; i++)
pre[i] = 1ll*pre[i-]*(k%MO+i-)%MO*inv[i]%MO;
}
int main()
{
freopen("loj6261.in","r",stdin);
freopen("loj6261.out","w",stdout);
scanf("%d%lld",&n,&k);
for (int i=; i<n; i++) scanf("%d",&a[i]);
if (k){
init();
for (len=; len<=n+n; len<<=) ++dt;
for (int i=; i<len; i++)
cov[i] = (cov[i>>]>>)|((i&)<<(dt-));
NTT(a, ), NTT(pre, );
for (int i=; i<len; i++) f[i] = 1ll*a[i]*pre[i]%MO;
NTT(f, -);
}else for (int i=; i<n; i++) f[i] = a[i];
for (int i=; i<n; i++) printf("%d\n",f[i]);
return ;
}
END
【NTT】loj#6261. 一个人的高三楼的更多相关文章
- LOJ #6261 一个人的高三楼
生成函数和组合数学的灵活应用 LOJ #6261 题意:求一个数列的$ k$次前缀和 $ Solution:$ 我们对原数列$ a$建生成函数$ A=\sum\limits_{i=0}^{n-1} a ...
- loj #6261 一个人的高三楼 FFT + 组合数递推
\(\color{#0066ff}{ 题目描述 }\) 一天的学习快要结束了,高三楼在晚自习的时候恢复了宁静. 不过,\(HSD\) 桑还有一些作业没有完成,他需要在这个晚自习写完.比如这道数学题: ...
- loj#6261. 一个人的高三楼(NTT+组合数学)
题面 传送门 题解 统计\(k\)阶前缀和,方法和这题一样 然后这里\(n\)比较大,那么把之前的柿子改写成 \[s_{j,k}=\sum_{i=1}^ja_i{j-i+k-1\choose j-i} ...
- BZOJ3028 食物 和 LOJ6261 一个人的高三楼
总结一下广义二项式定理. 食物 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么NC,他又幻想了他应该带一些什么东西.理所当然的,你当然要帮他计算携带N件物品的方案数 ...
- XJOI 夏令营501-511NOIP训练18 高三楼
参观完各种饭堂,学校还有什么著名的景点呢?当然是教室了,此时此刻我 们来到了高三楼.你会发现高三楼门口会有以身份认证系统,这东西还有着一段疼人的历史.每年的九月到来,高三的童鞋大多不习惯学校的作息时间 ...
- 「loj#6261」一个人的高三楼
题目 显然存在一个这样的柿子 \[S^{(k)}_i=\sum_{j=1}^iS^{(k-1)}_j\] 我们可以视为\(S^{(k)}\)就是由\(S^{(k-1)}\)卷上一个长度为\(n\)全是 ...
- [LOJ6261]一个人的高三楼
loj description 给你一个长度为\(n\)的数列\(a_i\),求它的\(k\)次前缀和模\(998244353\).(就是做\(k\)次前缀和后的数列) \(n\le10^5,k\le ...
- 夏令营501-511NOIP训练18——高三楼
传送门:QAQQAQ 题意:定义矩阵A与矩阵B重复,当且仅当A可以通过任意次行列交换得到B,例如下图A,B即为合法矩阵 现求对于$n*n$的矩阵有多少个不重复的矩阵 数据范围: 对于10%的数据 N≤ ...
- ZJOI2019一轮停课刷题记录
Preface 菜鸡HL终于狗来了他的省选停课,这次的时间很长,暂定停到一试结束,不过有机会二试的话还是可以搞到4月了 这段时间的学习就变得量大而且杂了,一般以刷薄弱的知识点和补一些新的奇怪技巧为主. ...
随机推荐
- ffmpeg文件生成m3u8文件及ts切片程序(一)
ffmpeg文件生成m3u8文件及ts切片程序(一) 实现目标:输入本地文件,实现m3u8切片,功能点请看注释,注意:注释很重要. 参考: http://www.cnblogs.com/mystory ...
- selenium框架安装及webdriver安装
本文介绍的是selenium安装及webdriver安装.小实例 1.selenium介绍 selenium是一个用于web应用程序测试的工具. Selenium测试直接运行在浏览器,就向真正的用户操 ...
- PullToRefreshListView
@Override protected void onRefreshing(final boolean doScroll) { /** * If we're not showing the Refre ...
- Is It A Tree?(hdu1325)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1325 Is It A Tree? Time Limit: 2000/1000 MS (Java/Oth ...
- Entity Framework小知识
记录在使用EF中使用的技巧,以备查阅. 1.当需要查询一个列总和的时候,如果列是允许NULL或者未查到信息的时候,想要返回的是0 而非NULL时 db.表名.Sum(p=> (decimal?) ...
- 将MySQL转化为mysqli
<?php/** * Created by PhpStorm. * User: 大神 * Date: 2017/7/24 * Time: 11:29 */ header('content-typ ...
- WebAPI创建
一.创建Web API 1.Create a New Web API Project创建新的Web API项目 Start by running Visual Studio 2010 and sele ...
- iOS开发ReactiveCocoa学习笔记(四)
ReactiveCocoa常见操作方法介绍: demo地址:https://github.com/SummerHH/ReactiveCocoa.git 1.1 ReactiveCocoa操作须知 所有 ...
- linux cached过高导致性能变低
场景: 拿到了客户50个文件,平均每个文件大概40M左右的txt,文件在S3上,需要导入到数据库,40M解析出来大概是80W条左右的数据. 描述: 在刚开始执行导入时,因为数据验证复杂程度不同,每个文 ...
- agc016B - Colorful Hats(智商题)
题意 题目链接 有$n$个人,每个人有一种颜色,第$i$个人说除了我之外有$a_i$种不同的颜色,问是否存在一组合法解 Sol 700分的题就这么神仙了么..好难啊... 先说结论吧 设$mx, mn ...