The 2020 ICPC Asia Macau Regional Contest A. Accelerator(分治+NTT)
A. Accelerator
每次从nnn个选出n−mn-mn−m的概率显然为
(nm)n!\frac{\binom{n}{m}}{n!} n!(mn)
#include<bits/stdc++.h>using namespace std;
using ll=long long;const int N=300010;
const int P=998244353;
const int G=3,Gi=332748118;
const int mod=998244353;int qmi(int a,int b)
{int v=1;while(b){if(b&1) v=1ll*v*a%P;a=1ll*a*a%P;b>>=1;}return v;
}
int rev[N];
void NTT(int *a,int n,int inv)
{for(int i=0;i<n;i++) if(i<rev[i]) swap(a[i],a[rev[i]]);for(int mid=1;mid<n;mid<<=1){int Wn=qmi((inv==1)?G:Gi,(P-1)/(mid<<1));for(int i=0;i<n;i+=(mid<<1)){int w=1;for(int j=0;j<mid;j++,w=1ll*w*Wn%P){int x=a[i+j],y=1ll*w*a[i+j+mid]%P;a[i+j]=(x+y)%P;a[i+j+mid]=(x-y+P)%P;}}}if(inv==-1) {int invn=qmi(n,P-2);for(int i=0;i<n;i++) a[i]=1ll*a[i]*invn%P;}
}
//=======================================================
int fact[N],infact[N];
void init()
{fact[0]=1;for(int i=1;i<=100000;i++) fact[i]=1ll*i*fact[i-1]%mod;infact[100000]=qmi(fact[100000],mod-2);for(int i=99999;i;i--) infact[i]=1ll*infact[i+1]*(i+1)%mod;
}
int n,A[N],B[N],C[N];
int Mul(int *a,int *b,int n,int m,int *ans)
{int bit=0,num=1;while(num<n+m+1) num<<=1,bit++;for(int i=0;i<num;i++) rev[i]=(rev[i>>1]>>1)|((i&1)<<(bit-1));for(int i=0;i<=n;i++) A[i]=a[i];for(int i=0;i<=m;i++) B[i]=b[i];for(int i=n+1;i<num;i++) A[i]=0;for(int i=m+1;i<num;i++) B[i]=0;NTT(A,num,1);NTT(B,num,1);for(int i=0;i<num;i++) C[i]=1ll*A[i]*B[i]%mod;NTT(C,num,-1);for(int i=0;i<=n+m;i++) ans[i]=C[i];return n+m;
}int pool[N<<1],tot;
struct Node
{int *p,n;void init(int x){this->n=1;p=pool+tot;for(int i=0;i<=n;i++) p[i]=0;p[0]=x;p[1]=1;tot+=n+1;}void mul(const Node&o){n=Mul(p,o.p,n,o.n,p);}
};
Node solve(int l,int r)
{Node ans;if(l==r){int x;cin>>x;ans.init(x);return ans;}int mid=l+r>>1;ans=solve(l,mid);ans.mul(solve(mid+1,r));return ans;
}
int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);init();int Tc;cin>>Tc;while(Tc--){cin>>n;Node res=solve(1,n);ll ans=0;for(int i=1;i<=n;i++)ans=(ans+1ll*res.p[n-i]*fact[i]%mod*fact[n-i]%mod)%mod;ans=ans*infact[n]%mod;printf("%lld\n",ans);}return 0;}
The 2020 ICPC Asia Macau Regional Contest A. Accelerator(分治+NTT)相关推荐
- 并查集 ---- 扩展域并查集判二分图 + 循环模拟字典树 The 2020 ICPC Asia Macau Regional Contest C. Club Assignment (详解)
题目链接 题目大意: 有n个数,现在要把他们拆分成两个集合,假设S为集合,有如下定义: f(S)={min(x⊕y)∣x,y∈S,andx!=y}f(S)=\{min(x\oplus y)|x,y\i ...
- The 2020 ICPC Asia Macau Regional Contest J. Jewel Grab(数颜色+链表)
J. Jewel Grab Tartarus _Wallace_ 转化询问:对于一个询问 [s,k],找到一个最长的区间 [s,t],满足区间中出现次数超过一次的元素,的出现次数减一,的和,不超过 k ...
- The 2020 ICPC Asia Macau Regional Contest
文章目录 前言 D.Artifacts F. Fixing Networks L. Random Permutation 总结 前言 vp D.Artifacts 题意:阅读理解,字符串中提取出来对应 ...
- The 2020 ICPC Asia Shenyang Regional Programming Contest I题 Rise of Shadows(数论)
题目链接The 2020 ICPC Asia Shenyang Regional Programming Contest 题目大意: 一天内有H小时,每小时M分钟,时针分针以恒定速率旋转. 现在若时针 ...
- The 2020 ICPC Asia Yinchuan Regional Programming Contest
The 2020 ICPC Asia Yinchuan Regional Programming Contest A 开三个vector数组存储x,y,z轴上的点,unique+erase去重 #in ...
- The 2019 ICPC Asia Shanghai Regional Contest
The 2019 ICPC Asia Shanghai Regional Contest 题号 题目 知识点 A Mr. Panda and Dominoes B Prefix Code C Maze ...
- 2018 ICPC Asia Jakarta Regional Contest
2018 ICPC Asia Jakarta Regional Contest 题号 题目 知识点 难度 A Edit Distance B Rotating Gear C Smart Thief D ...
- 【题目记录】——The 2021 ICPC Asia Jinan Regional Contest
文章目录 C Optimal Strategy 组合数 H Game Coin K Search For Mafuyu 欧拉序列 题目集地址 The 2021 ICPC Asia Jinan Regi ...
- 2019-2020 ICPC Asia Xuzhou Regional Contest【徐州现场赛】
题目: 209-2020 ICPC Asia Xuzhou Regional Onsite Contest E. Multiply 题意: 找到最大的 i 使得 z*x^i 是 y! 的因子 分析: ...
最新文章
- struct_config.xml中action/set-property标签的用法
- 11g compression 新特性(1)
- 数据结构应用实例#栈#迷宫寻路
- mac+php7+mysql.so_在Mac上编译安装PHP7的开发环境
- php中控车牌识别push协议,车牌识别一体机的RS485小接口——实现透明传输!
- Error starting userland proxy: listen tcp 0.0.0.0:5601: bind: address already in use
- mysql 取出全部数据库_php取出mysql数据库中所有数据
- TCP 和 UDP 绑定同一端口通信的解释
- css限制单行文本输入,超出部分使用...替换
- java犀牛是什么意思_深入浅出Rhino:Java与JS互操作
- Nginx禁止直接通过IP地址访问网站以及限制IP登陆某目录(关闭默认站点或空主机头)...
- 小米有品员工签军令状,自动放弃年终奖!
- 每日一题_36. 有效的数独
- java后台导出word文档正文、表格、图片
- 贝叶斯分类器(贝叶斯决策论,极大似然估计,朴素贝叶斯分类器,半朴素贝叶斯分类器,贝叶斯网)学习笔记
- Android相机对焦问题
- 从零开始学C++之继承(二):继承与构造函数、派生类到基类的转换
- 街头智慧:罗杰斯的投资与人生
- 集成运算放大器的线性应用(模电速成)
- 腹直肌整体(05):仰卧屈膝两头起
热门文章
- java定义构造方法_JAVA基础学习之路(三)类定义及构造方法
- mvn 打包可执行包_用Maven打包发布可执行的jar包
- java虚拟机工作原理图_Java虚拟机工作原理
- 香肠派对电脑版_香肠派对先行服s7赛季下载-香肠派对先行服s7赛季最新版下载...
- java超长字符序列化_String 字符串最长可以有多长?
- php sorcket_PHP: Sockets - Manual
- groovy 字符串截取最后一个_Python入门高级教程--Python 字符串
- 机器学习之数据集划分——训练集测试集划分,划分函数,估计器的使用
- 敲黑板!vue3重点!一文了解Composition API新特性:ref、toRef、toRefs
- [mybatis]映射文件_select_返回集合(List,Map)