题意

给定一个长为\(n\)的序列\(a\),求出其\(k\)阶差分或前缀和。结果的每一项都需要对\(1004535809\)取模。


打表找规律

先看前缀和,设\(n=5\),\(k=4\),按照阶从小到大把\(a_1\)在每个位置出现的次数列出来:

\[ 0阶:1,0,0,0,0\\ 1阶:1,2,3,4,5\\ 2阶:1,3,6,10,15\\ 3阶::1,4,10,20,35 \]

再把\(a_2\)的列出来可以发现就是\(a_1\)的表往后移了一位,所以第\(k\)阶前缀和第\(i\)位\(S_{k,i}=\sum_{j=1}^{i}{k-1+i-j\choose k-1}a_j\),发现是卷积的形式,可以用NTT做。

再看差分,还是设\(n=5\),\(k=4\),把表列出来:

\[ 0阶:1,0,0,0,0\\ 1阶:1,-1,0,0,0\\ 2阶:1,-2,1,0,0\\ 3阶:1,-3,3,-1,0\\ 4阶:1,-4,6,-4,1 \]

类似于前缀和,可以归纳出\(S_{k,i}=\sum_{j=1}^i(-1)^{i-j}{k\choose i-j}\times a_j\),也是卷积的形式,用NTT做。

最后注意\(k\)很大。所以组合数需要递推地来求,但\(k\)仍然很大。

注意到前缀和的组合数,设\(g_i={k-1+i\choose k-1}\),列出\(g\)的递推式:

\[ g_i=\frac{g_{i-1}\times (k+i-1)}{i}\%p\\ =(\frac{g_{i-1}}{i}\%p)\times ((k+i-1)\%p)\\ =(\frac{g_{i-1}}{i}\%p)\times ((k\%p+i-1)\%p) \]

差分的递推式可以类似地推导,可以总结出我们可以直接对\(k\)取模。

#include<bits/stdc++.h>
#define rg register
#define il inline
#define cn const
#define gc getchar()
#define fp(i,a,b) for(rg int i=(a),ed=(b);i<=ed;++i)
using namespace std;
typedef cn int cint;
cint maxn=100010,G=3,invG=334845270,mod=1004535809;
il int rd(){rg int x(0),f(1); rg char c(gc);while(c<'0'||'9'<c)c=gc;while('0'<=c&&c<='9')x=(x<<3)+(x<<1)+(c^48),c=gc;return x*f;
}
il int read(){rg int x(0),f(1); rg char c(gc);while(c<'0'||'9'<c)c=gc;while('0'<=c&&c<='9')x=(10ll*x%mod+(c^48))%mod,c=gc;return x*f;
}int n,m,t,a[maxn<<2],b[maxn<<2],inv[maxn],p[maxn];
int lim=1,l,rev,r[maxn<<2];il int fpow(int a,int b,int ans=1){for(;b;b>>=1,a=1ll*a*a%mod)if(b&1)ans=1ll*ans*a%mod;return ans;
}
il int finv(cint &n){return fpow(n,mod-2);}il void ntt(int *a,cint &f){fp(i,0,lim)if(i<r[i])swap(a[i],a[r[i]]);for(rg int md=1;md<lim;md<<=1){rg int len=md<<1,Gn=fpow(f?G:invG,(mod-1)/len);for(rg int l=0;l<lim;l+=len){rg int Pow=1;for(rg int nw=0;nw<md;++nw,Pow=1ll*Pow*Gn%mod){rg int x=a[l+nw],y=1ll*a[l+nw+md]*Pow%mod;a[l+nw]=(x+y)%mod,a[l+nw+md]=(x-y+mod)%mod;}}}
}int main(){n=rd(),m=read(),t=rd(); fp(i,1,n)a[i]=rd();inv[1]=1; fp(i,2,n)inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;p[0]=1; fp(i,1,n)p[i]=mod-p[i-1];if(!t){b[0]=1;fp(i,1,n)b[i]=1ll*(m+i-1)*inv[i]%mod *b[i-1]%mod;}else{b[0]=1;fp(i,1,n)b[i]=1ll*inv[i]*(m-i+1)%mod *b[i-1]%mod;fp(i,1,n)b[i]=1ll*b[i]*p[i]%mod;}while(lim<=n<<1)lim<<=1,++l; rev=finv(lim);fp(i,0,lim-1)r[i]=(r[i>>1]>>1)|((i&1)<<(l-1));ntt(a,1),ntt(b,1);fp(i,0,lim)a[i]=1ll*a[i]*b[i]%mod; ntt(a,0);fp(i,1,n) printf("%lld ",1ll*a[i]*rev%mod);return 0;
}

LuoguP5488 差分与前缀和相关推荐

  1. P5488 差分与前缀和(多项式/生成函数)

    P5488 差分与前缀和 对于这道题需要我们快速对一个数列求解前缀和和差分,那么我们利用生成函数的知识,就可以知道实际上等价于乘一个多项式,然后我们就有了一个ln和exp的方法,然后比较简短的方法就是 ...

  2. 蓝桥杯python省赛冲刺篇2——常用算法的详细解析及对应蓝桥杯真题:打表模拟法、递推递归法、枚举法、贪心算法、差分与前缀和

    注意:加了题目链接 目录 注意:加了题目链接 一.打表模拟法 介绍 1. 算式问题 题目描述 解析与代码演示 2. 求值 题目描述 解析与代码演示 3. 既约分数 题目描述 解析与代码演示 4. 天干 ...

  3. P5488 差分与前缀和 解题报告

    P5488 差分与前缀和 解题报告 link 题目大意 给定一个长度为 n n n 的序列 a i a_i ai​ ,求其 k k k 阶差分或前缀和.对 1004535809 取模. 1 ≤ n ≤ ...

  4. 【算法】差分与前缀和 算法详解+例题剖析

    目录 一.前缀和 二. 差分思想 1.静态数组的区间求和问题 2.静态维护区间加等差数列的求和问题 三.二维前缀和 二维前缀和例题P2280 [HNOI2003]激光炸弹 四.例题 例题一:差分+前缀 ...

  5. 【HDU - 6514】Monitor(二维差分,前缀和)

    题干: Monitor Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 163840/163840 K (Java/Others) To ...

  6. Codeforces Round #643 (Div. 2)-C. Count Triangles(差分,前缀和)(避免标题重复率的小括号)

    题目链接 题意: 给你a,b,c,d,保证a<=b<=c<=d,问你有多少个x,y,z符合a<=x<=b<=y<=c<=z<=d,并且x,y,z能 ...

  7. 十八项新的世界纪录背后……

    编辑:阿由 设计:紫菜 在日常的工作与生活中,人们可能经常会遇到这样一些产品:它们可能具备某种独特的销售主张,也可能具备某种独特的消费观念--以超然于世的姿态,宣示着它们的存在. 我们称之为:概念产品 ...

  8. 0x03.基本算法 — 前缀和与差分

    目录 一.前缀和 二.二维前缀和 1.二维前缀和的修改和求和 0. NOI 2003激光炸弹(二维前缀和) 1.牛妹吃豆子(二维前缀和模板,修改+求和) 2.静态数组的区间求和问题 3.静态维护区间加 ...

  9. 信奥中的数学:前缀和与差分、大整数开方技巧

    [算法2-1]前缀和与差分 [算法2-1]前缀和与差分 - 题单 - 洛谷 前缀和与差分 图文并茂 超详细整理(全网最通俗易懂) 前缀和与差分 图文并茂 超详细整理(全网最通俗易懂)_林深不见鹿 的博 ...

最新文章

  1. 洛谷 P1029 最大公约数和最小公倍数问题
  2. 近半年能力没进步原因分析与求助
  3. 【HTML5】Canvas画布
  4. java url特殊字符转义字符_URL中包含有特殊字符,进行转义
  5. HTC公布第二款区块链手机Exodus 1s:或将于9月前发售
  6. 支付宝小程序封装请求
  7. 最强数据库工具——IDEA
  8. ASCII码判断大小
  9. 输出大于某个正整数n的最小的质数
  10. 大型网站架构技术方案集锦[转]
  11. 嵌入式 Linux平台 C程序 交叉编译技术
  12. redmi Note12T屏幕刷新率是多少 Redmi Note12T相机怎么样 有几个摄像头
  13. 【阿里巴巴】数据开发暑期实习生面试面经 技术面 已凉凉
  14. CCS 3.3 创建DSP TMSC6726B工程
  15. RCLAMP0544T 国产替代上海雷卯ULC0544T
  16. ccs工程文件类型和作用
  17. Java之JDK环境的安装与配置
  18. 盲盒商城源码系统附源码
  19. 【自然语言处理NLP】中文语料整理【情感分析、文本分类、摘要、实体分析】
  20. 数据结构和算法 第二小题 九宫重排(1)

热门文章

  1. vs使用——ipch和sdf
  2. 五岳华酿养生露酒赢开创白酒市场新蓝海
  3. 华为手机转鸿蒙系统,剧情反转安卓官网恢复多款华为手机上架 鸿蒙系统功不可没...
  4. kicad绿油开窗_KiCad里Pcbnew中各层的使用说明
  5. ESP8266开发之旅 应用篇⑭ 局域网应用 ——炫酷RGB彩灯(WebSocket实现)
  6. 人工智能是人类创造的工具 缺乏能够构建高效系统的天才专业人员
  7. 应对京东618店庆 八爪鱼可以为企业销售加分
  8. 舆情项目xpathtest问题
  9. C# .net 利用NPOI插件导出类似简历的word文件
  10. 【Java基础】学习笔记