BZOJ(本校) 3027 快速傅里叶变换 - 概率与期望&dp
来源:互联网 发布:橱柜设计软件下载 编辑:程序博客网 时间:2024/05/18 00:37
题目描述
有n 颗珠子,珠子的编号依次为1 到n。第i 颗珠子的美丽值为vi,这是一个在1 到m 之间的正整数。
查尔明将会从中等概率随机抽取1 到n 颗珠子,那么此时他的高兴度为所有抽到的珠子的美丽值的最大公约数。查尔明想知道,他的期望高兴度是多少,你能帮帮他吗?因为查尔明不喜欢实数和大数,所以你只需要输出结果×(2^n − 1) 的值对998244353 取模的结果即可。
输入
n, m
v1, v2, ……,vn
输出
答案
样例输入
3 4
2 4 3
样例输出
14
提示
对于30% 的数据,n ≤ 20,m ≤ 100000。
对于另外30% 的数据,n ≤ 100000,m ≤ 20。
对于100% 的数据,n ≤ 100000,m ≤ 100000。
来源
Claris
分析:
先求出1~m中,每个数出现的次数,记为a[]。
令f[i]表示选出的数所得的gcd是i的倍数的方案数,t为在给出的n个数中i的倍数出现的次数
则:f[i] =
那么根据容斥原理,令g[i]表示选出的数所得的gcd是i的方案数
则:
ans=
不要忘记%Mod哦,前面的推导都没有写%Mod
#include<cstdio>#define MAXN 100000#define Mod 998244353typedef long long LL;LL n,m,a[MAXN+10],f[MAXN+10],g[MAXN+10],P[MAXN+10],ans;int main(){ LL x; scanf("%I64d%I64d",&n,&m); for(LL i=1;i<=n;i++){ scanf("%I64d",&x); a[x]++; } P[0]=1; for(LL i=1;i<=n;i++) P[i]=P[i-1]*2%Mod; for(LL i=1;i<=m;i++){ LL cnt=0; for(LL j=i;j<=m;j+=i) cnt+=a[j]; f[i]=(P[cnt]-1)%Mod; } for(LL i=m;i>=1;i--){ LL sum=0; for(LL j=i+i;j<=m;j+=i) sum=(sum+g[j])%Mod; g[i]=(f[i]-sum+Mod)%Mod; } for(LL i=1;i<=m;i++) ans=(ans+i*g[i]%Mod)%Mod; printf("%lld\n",ans); return 0;}
0 0
- BZOJ(本校) 3027 快速傅里叶变换 - 概率与期望&dp
- bzoj 4318: OSU!|概率与期望|dp
- bzoj 3566: [SHOI2014]概率充电器 (概率与期望DP)
- 概率与期望DP
- bzoj 3450: Tyvj1952 Easy (概率与期望dp)
- bzoj 4318: OSU! (概率与期望DP)
- bzoj 4008: [HNOI2015]亚瑟王 (概率与期望DP)
- 【BZOJ 4008】【HNOI 2015】亚瑟王【概率与期望DP】
- bzoj 4832: 抵制克苏恩 (概率与期望DP)
- bzoj 2134(概率与期望)
- bzoj 4008 亚瑟王 期望概率dp
- bzoj 4318 OSU 概率期望dp
- bzoj 4832 抵制克苏恩 概率期望dp
- 浅谈 概率与期望 DP
- BZOJ 1426 概率/期望DP神题 手推概率DP
- bzoj 3640(期望与DP)
- bzoj 4008(期望与DP)
- bzoj 1419(期望与dp)
- videoView
- 删除Xcode中多余的证书provisioning profile
- 4.14-1 图片太大遇到的问题,Bitmap too large to be uploaded into a texture (2340x4160, max=4096x4096)
- App Store审核被拒的各种原因
- UVA 101
- BZOJ(本校) 3027 快速傅里叶变换 - 概率与期望&dp
- Python基本数据类型
- Building Maintainable Software-java篇之 Write Clean Code
- CA服务器的创建和CA客户端认证过程
- linux-信号量
- leetcode279-Perfect Squares
- 基于vivado的fir ip核的重采样设计与实现
- UVA 156
- USACO 1.4 Search Techniques