当前位置: 首页 > news >正文

ABC432G Sum of Binom(A, B) 题解 / NTT

题面传送门:ABC432G Sum of Binom(A, B)。

\(c_i\)\(A_x=i\) 的个数,\(d_i\)\(B_x=i\) 的个数。

那么

\[\begin{aligned}ans&= \sum_{i=1}^V \sum_{j=1}^V c_i d_j \frac{i!}{j!(i-j)!} \\ &= \sum_{i=1}^V c_i i! \sum_{j=1}^V \frac{d_j}{j!} \frac{1}{(i-j)!} \end{aligned} \]

发现后面循环是卷积的形式,构造 \(F(x)=\sum\limits_{i=0} \frac{d_i}{i!} x^i\)\(G(x)=\sum\limits_{i=0} \frac{1}{i!} x^i\)

\(H=F\times G\),那么 \(ans=\sum_{i=1}^V c_i i! [x^i] H(x)\)

#include<bits/stdc++.h>
#define int long long
#define double long double
using namespace std;
const int N=1048576+10,mod=998244353,G=3,invG=(mod+1)/3;
inline int read(){char c=getchar();int f=1,ans=0;while(c<48||c>57) f=(c==45?f=-1:1),c=getchar();while(c>=48&&c<=57) ans=(ans<<1)+(ans<<3)+(c^48),c=getchar();return ans*f;
}
int a[N],b[N],c[N],d[N],r[N],invfac[N],fac[N],n,m;
inline int qpow(int a,int b){int s=1;while(b) (b&1)?s=s*a%mod:1,a=a*a%mod,b>>=1;return s;}
inline void exgcd(int a,int b,int &x,int &y){if (b==0) x=1,y=0;else exgcd(b,a%b,y,x),y-=a/b*x;}
inline int inv(int a){int x,y;exgcd(a,mod,x,y);return (x%mod+mod)%mod;}
inline void ntt(int *a,int n,int op){for (int i=0;i<n;i++) if (i<r[i]) swap(a[i],a[r[i]]);for (int i=2;i<=n;i<<=1){int g1=qpow(op==1?G:invG,(mod-1)/i);for (int j=0;j<n;j+=i){int gk=1;for (int k=0,x,y;k<(i>>1);k++,gk=gk*g1%mod) x=a[j+k],y=a[j+k+i/2]*gk%mod,a[j+k]=(x+y)%mod,a[j+k+i/2]=(x-y+mod)%mod;}}
}
inline void mul(int *a,int *b,int n,int m){int len=1,lg=0;while(len<=n+m) len<<=1,lg++;for (int i=0;i<len;i++) r[i]=(r[i>>1]>>1)|((i&1)<<lg-1);ntt(a,len,1),ntt(b,len,1);for (int i=0;i<len;i++) a[i]=a[i]*b[i]%mod;ntt(a,len,-1);int tmp=inv(len);for (int i=0;i<len;i++) a[i]=a[i]*tmp%mod;
}
main(){n=read(),m=read();int mx=0;for (int i=1,x;i<=n;i++) c[x=read()]++,mx=max(mx,x);for (int i=1,x;i<=m;i++) d[x=read()]++,mx=max(mx,x);fac[0]=invfac[0]=1;for (int i=1;i<=mx;i++) fac[i]=fac[i-1]*i%mod,invfac[i]=invfac[i-1]*inv(i)%mod;for (int i=0;i<=mx;i++) a[i]=d[i]*invfac[i]%mod,b[i]=invfac[i]%mod;mul(a,b,mx,mx);int ans=0;for (int i=0;i<=mx;i++) ans=(ans+c[i]*fac[i]%mod*a[i]%mod)%mod;cout <<ans;return 0;
}
http://www.jsqmd.com/news/321330/

相关文章:

  • 2026年深圳靠谱的湿巾类包装企业排名,值得选的厂家汇总
  • 2026年口碑好的石墨烯发热片源头厂家推荐,专业制作企业全解析
  • 基于python的垃圾分类系统
  • 广雪制冷产品好用吗?价格怎样,探讨其合作报价与耐用性
  • C#联合CODESOFT标签在线列印软件,源代码,适合自己做二次开发标签在线列印软件。 里面可...
  • 基于python的凯特生活超市商品管理系统hx3940
  • 2026年定制眼镜品牌推荐,服务不错的定制眼镜品牌排名
  • 基于python的京东评论数据分析可视化
  • 基于python的连锁超市线上管理系统hx2008
  • 宁波郡狮全手工定制服装的口碑和价格咋样?
  • 2026江西中医药大学中医师承学习班口碑如何,真实评价全分享
  • 实用指南:腾讯WAIC发布“1+3+N”AI全景图:混元3D世界模型开源,具身智能平台Tairos亮相
  • 分析苏州众和,产品种类丰富吗?品牌形象好不好?为你揭晓答案
  • 开发电影/电视剧推荐工具,输入喜好类型,(悬疑/喜剧/言情)推荐适配作品,标注评分及看点,过滤烂片,帮用户节省选片的时间。
  • 2026年靠谱的聚氨酯喷涂机厂家,高效国产机品牌值得关注
  • 【面板数据】省级ZF公共服务注意力文本分析数据集(2000-2025)
  • 基于python的麻辣烫餐馆管理系统hx3543
  • C# Avalonia 19- DataBinding- DataTemplateList
  • 【工具变量】企业过度负债水平数据集(2009-2024年)
  • 物流冷库设计安装实力公司哪家好,广雪制冷值得选
  • 基于python的路面缺陷监测系统hx3052
  • 2026年杭州IPWO价格排名,节能效果好的产品怎么选
  • 基于Python的猫眼电影数据可视化分析系统
  • 说说深圳发热片实力厂家,哪家品牌靠谱且性价比高?
  • 2026最新云南/昆明房屋/写字楼/卫生间/工程/厨房堵漏维修服务推荐!权威榜单发布,专业团队守护建筑防水安全
  • python的人脸检测识别系统
  • Excel课程资源合集(第二辑)
  • 盘点值得推荐的软包装厂家,苏州众和市场口碑怎么样
  • 基于Python的人工智能图像风格迁移系统
  • 2026年市面上专业的ISO认证办理机构哪家权威,ISO9001认证/3A信用认证,ISO认证办理公司怎么找