[Codeforces547C]Mike and Foam(莫比乌斯反演+组合数学)
来源:互联网 发布:求推荐淘宝美国代购店 编辑:程序博客网 时间:2024/05/29 15:55
题目描述
传送门
题意:给出一列数a1..an,每一次给出一个数x,将ax的状态取反(有变成没有,没有变成有,初始没有),每一次统计存在的数中gcd(ai,aj)=1(i
题解
设
那么
实际上我们要求的就是
那么利用反演公式
可以得到
考虑
假设我们能求出来
那么显然
要求
求
这样
以上讨论的都是给出了所有的数算一遍
但是这道题是有q个操作,其实比上面筛法什么的还要简单,只需要动态维护
时间复杂度
代码
#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 500005#define LL long longint n,q,a[N],p[N],prime[N],mu[N],flag[N];LL f[N],ans;void get(int n){ mu[1]=1; for (int i=2;i<=n;++i) { if (!p[i]) { prime[++prime[0]]=i; mu[i]=-1; } for (int j=1;j<=prime[0]&&i*prime[j]<=n;++j) { p[i*prime[j]]=1; if (i%prime[j]==0) { mu[i*prime[j]]=0; break; } else mu[i*prime[j]]=-mu[i]; } }}void change(int n,int opt){ for (int i=1;i*i<=n;++i) if (n%i==0) { ans-=f[i]*(f[i]-1)/2*mu[i]; f[i]+=opt; ans+=f[i]*(f[i]-1)/2*mu[i]; if (n/i==i) continue; ans-=f[n/i]*(f[n/i]-1)/2*mu[n/i]; f[n/i]+=opt; ans+=f[n/i]*(f[n/i]-1)/2*mu[n/i]; }}int main(){ get(500000); scanf("%d%d",&n,&q); for (int i=1;i<=n;++i) scanf("%d",&a[i]); memset(flag,-1,sizeof(flag)); for (int i=1;i<=q;++i) { int x;scanf("%d",&x); flag[x]=-flag[x]; change(a[x],flag[x]); printf("%I64d\n",ans); }}
1 0
- [Codeforces547C]Mike and Foam(莫比乌斯反演+组合数学)
- CodeForces 547C. Mike and Foam 莫比乌斯反演
- codeforces #305 547C C. Mike and Foam(莫比乌斯反演)
- Codeforces 548E Mike and Foam (容斥+莫比乌斯反演)
- codeforces 548 E. Mike and Foam (莫比乌斯反演)
- [Codeforces 547C] Mike And Foam 莫比乌斯反演
- 解题报告: Codeforces Round #305 (Div. 2) E.Mike and Foam (莫比乌斯反演)
- 【容斥原理】Codeforces547C[Mike and Foam]题解
- codeforces 547C. Mike and Foam (反演)
- HDU 6088 Rikka with Rock-paper-scissors(莫比乌斯反演+组合数学+FFT)
- Codeforces548E:Mike and Foam
- 【BZOJ2693】jzptab(莫比乌斯反演)(数学)
- Codeforces Round #305 (Div. 1)C. Mike and Foam 数学
- [HYSBZ/BZOJ2301]Problem b [莫比乌斯反演+分块] 【组合数学】
- 组合数学常用内容——基础内容+莫比乌斯反演
- SPOJ PGCD - Primes in GCD Table [莫比乌斯反演+分段+求和优化]【组合数学】
- Codeforces 689E Mike and Geometry Problem(组合数学)
- CF 547 C Mike and Foam(容斥原理)
- 公约数、公倍数
- 欢迎使用CSDN-markdown编辑器
- php一句话猥琐流搞法
- idea 断电后 崩溃 全变红
- WebGL首篇
- [Codeforces547C]Mike and Foam(莫比乌斯反演+组合数学)
- .NET Reflector 版本问题和破解方法
- Android Studio 构建属于自己的工具库工程,并引用到其他项目
- 提升SQLite数据插入效率低、速度慢的方法
- display:table-cell的用法
- 启动Android模拟器后,在file Explorer中看不到任何文件
- @within @annotion @target 的区别
- C++ 学习笔记
- springMVC中validation校验案例