【Gcd】
【题目描述】
有 n 个正整数 x1~xn,初始时状态均为未选。有 m 个操作,每个操作给定一个编号 i,将 xi 的选取状态取反。每次操作后,你需要求出选取的数中有多少个互质的无序数对。
【输入数据】
第一行两个整数 n,m。第二行 n 个整数 x1~xn。接下来 m 行每行一个整数。
【输出数据】
m 行,每行一个整数表示答案。
【样例输入】
4 5 1 2 3 4 1 2 3 4 1
【样例输出】
0 1 3 5 2
【数据范围】
对于 20%的数据,n,m<=1000。对于另外 30%的数据,xi<=100。对于 100%的数据,n,m<=200000,xi<=500000,1<=i<=n。
分析:
对带有询问修改的问题我们可以先想出无询问无修改的问题解决方法,然后将解法组织成易于修改和回答询问的形式。
那么对于这道题,无修改无询问则是:给出n个数,求出n个数中互质的无序数对个数。
让我们考虑互质的本质——没有大于1的公因子,即GCD(a,b)==1。这样的数学题我们清楚地知道一一枚举是没有好结果的,通常情况下这类问题可以朝两大方向思考:组合数与容斥原理。
由于本题不存在方案数、概率等的计算,因此我们尝尝容斥原理的味道。
既然企图使用容斥,那么定几个表示有关联数组是很有必要的:
·f(i)表示GCD为i的 #include<stdio.h>
#define ll long long
#define go(i,a,b) for(int i=a;i<=b;i++)
;
int n,m,a[N],I,x,d,Mob[N];
ll s[N],g[N],f[N],ans;bool get[N];
struct Sieve
{
int prime[N],t;bool no[N];
void Mobius_Sieve()
{
Mob[]=;
go(i,,){;
go(j,,t){)break;
Mob[i*prime[j]]=i%prime[j]?-Mob[i]:;
no[i*prime[j]]=;)break;}}
}
}Tool;
int main()
{
Tool.Mobius_Sieve();
scanf("%d%d",&n,&m);
go(i,,n)scanf("%d",a+i);
while(m--)
{
scanf("%d",&I);x=a[I];
d=()?:-;
go(i,,x)&&i*i<=x)
{
s[i]+=d;if(i!=x/i)
s[x/i]+=d;
ans-=Mob[i]*g[i];if(i!=x/i)
ans-=Mob[x/i]*g[x/i];
g[i]=s[i]*(s[i]-)/;if(i!=x/i)
g[x/i]=s[x/i]*(s[x/i]-)/;
ans+=Mob[i]*g[i];if(i!=x/i)
ans+=Mob[x/i]*g[x/i];
}
else if(i*i>x)break;
printf("%lld\n",ans);
}
;
}//Paul_Guderian
我常常在河边呆呆的幻想,
做着一个孩子的白日梦,
想象未来有许多颜色。————汪峰《我在长大》
【Gcd】的更多相关文章
- 【gcd】 最大公约数
int gcd(int a,int b) { int r; ) { r=a%b; a=b; b=r; } return a; }
- upc组队赛1 不存在的泳池【GCD】
不存在的泳池 题目描述 小w是云南中医学院的同学,有一天他看到了学校的百度百科介绍: 截止到2014年5月,云南中医学院图书馆纸本藏书74.8457万册,纸质期刊388种,馆藏线装古籍图书1.8万册, ...
- 【GCD】AtCoder Grand Contest 018 A - Getting Difference
从大到小排序,相邻两项作差,求gcd,如果K是gcd的倍数并且K<=max{a(i)},必然有解,否则无解. 可以自己手画画证明. #include<cstdio> #include ...
- 【gcd】辗转相除法
#include<stdio.h> int gcd(int a, int b) { int c; while(b) { c = a % b; a = b; b = c; } return ...
- 辗转相除法求最大公约数和最小公倍数【gcd】
要求最小公倍数可先求出最大公约数 设要求两个数a,b的最大公约数 伪代码: int yushu,a,b: while(b不等于0) { yushu=a对b求余 b的值赋给a yushu的值赋给b } ...
- 【数学】XMU 1597 GCD
题目链接: http://acm.xmu.edu.cn/JudgeOnline/problem.php?id=1597 题目大意: 求(am-bm, an-bn),结果取模1000000007,a,b ...
- 【BZOJ2820】YY的GCD(莫比乌斯反演)
[BZOJ2820]YY的GCD(莫比乌斯反演) 题面 讨厌权限题!!!提供洛谷题面 题解 单次询问\(O(n)\)是做过的一模一样的题目 但是现在很显然不行了, 于是继续推 \[ans=\sum_{ ...
- 【UVa11426】GCD - Extreme (II)(莫比乌斯反演)
[UVa11426]GCD - Extreme (II)(莫比乌斯反演) 题面 Vjudge 题解 这.. 直接套路的莫比乌斯反演 我连式子都不想写了 默认推到这里把.. 然后把\(ans\)写一下 ...
- 【BZOJ2818】Gcd(莫比乌斯反演)
[BZOJ2818]Gcd(莫比乌斯反演) 题面 Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的 数对(x,y)有多少对. Input 一个整数N Ou ...
随机推荐
- 【学习笔记】windows安装jhipster踏坑记录
序: 入职新公司第二天了,本来第一天是配置环境来着,配了一下午也没搞成那个jhipster的安装,每次以为应该正常的时候都是不对,yo是yeoman的指令,但是我是使用yarn管理的yeoman 纠结 ...
- 数据恢复培训资料:BMP文件详解
BMP是一种与硬件设备无关的图像文件格式,使用非常广.它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BblP文件所占用的空间很大.BMP文件的图像深度可选lbit.4bit.8 ...
- MyBatis 中使用数据库查询别名进行映射
方法1 XXMapper.xml <mapper namespace="com.hfepc.dao.andon.AndonExceptionKanbanVOMapper" & ...
- 基本数据类型 Symbol
ES6 规范之前, JavaScript 一共有六种数据类型,分别是五种基本数据类型: string . number , boolean , null , undefined ,和一种引用数据类型: ...
- 鼠标滑过切换div显示(鼠标事件)
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- Python——cmd调用(os.system阻塞处理)
os.system(返回值为0,1,2) 0:成功 1:失败 2:错误 os.system默认阻塞当前程序执行,在cmd命令前加入start可不阻塞当前程序执行. 例如: import os os.s ...
- 关于win10系统1709版本安装JDK出现变量配置正确但仍有“java不是内部或外部命令”的解决办法
背景:联想拯救者R720笔记本,系统一键还原了,需要重新安装一部分软件,最基本的就是JDK,但今天在安装时遇到了问题,之前安装的1.8版本,没有仔细配置环境变量,这一次安装的是1.7版本的,仔仔细细配 ...
- 新概念英语(1-69)The car race
新概念英语(1-69)The car race Which car was the winner in 1995 ? There is car race near our town every ye ...
- Web框架之Django基础篇
Web框架之Django基础篇 本节介绍Django 简介,安装 基本配置及学习 路由(Urls).视图(Views).模板(Template).Model(ORM). 简介 Django 是一 ...
- windbg分析Kernel32.dll导出表
写在前面的话: 继续上篇,在获得了Kernel32.dll基址的基础上,分析它的导出表结构: 对PE结构不太熟悉的同学,可以参考看雪论坛里的一篇帖子:https://bbs.pediy.com/thr ...