E. Mike and Foam(容斥原理)「建议收藏」

E. Mike and Foam(容斥原理)

大家好,又见面了,我是全栈君。

E. Mike and Foam

Mike is a bartender at Rico’s bar. At Rico’s, they put beer glasses in a special shelf. There are n kinds of beer at Rico’s numbered from 1 to n. i-th kind of beer has ai milliliters of foam on it.


E. Mike and Foam(容斥原理)「建议收藏」

Maxim is Mike’s boss. Today he told Mike to perform q queries. Initially the shelf is empty. In each request, Maxim gives him a number x. If beer number x is already in the shelf, then Mike should remove it from the shelf, otherwise he should put it in the shelf.

After each query, Mike should tell him the score of the shelf. Bears are geeks. So they think that the score of a shelf is the number of pairs (i, j) of glasses in the shelf such that i < j and E. Mike and Foam(容斥原理)「建议收藏」 where E. Mike and Foam(容斥原理)「建议收藏」 is the greatest common divisor of numbers a and b.

Mike is tired. So he asked you to help him in performing these requests.

Input

The first line of input contains numbers n and q (1 ≤ n, q ≤ 2 × 105), the number of different kinds of beer and number of queries.

The next line contains n space separated integers, a1, a2, … , an (1 ≤ ai ≤ 5 × 105), the height of foam in top of each kind of beer.

The next q lines contain the queries. Each query consists of a single integer integer x (1 ≤ x ≤ n), the index of a beer that should be added or removed from the shelf.

Output

For each query, print the answer for that query in one line.

Sample test(s)
Input
5 6
1 2 3 4 6
1
2
3
4
5
1

Output
0
1
3
5
6
2

题意简单易懂,我就不说了。。。

题解:题目能够转化为,在一个动态的集合中。没增加一个数。或取出一个数后,剩下的数中互质的有多少对。注意是无序的。 由于在题目的数据范围内质因子的数量非常少,复杂度基本上能够忽略不计,所以我们能够对每个新加进去的数。或者取出来的数进行质因子分解。然后通过容斥原理,先算出集合中有多少个与其不互质,这个非常easy算出来吧!

(假设想不出来能够看下我的代码,就是通过一个数组来计数,挺简单)。知道了不互质的。自然就知道互质了辣!

然后就答案减去或者加上互质的数就能够了。 时间复杂度预计10^7级别。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116365.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python set大小_python set集合

    python set大小_python set集合集合set可变的无序的不重复的元素集合set定义初始化set()生成一个空集合set(iterable)可通过可迭代对象生产一个新的集合s1=set()s2=set(range(5))s3=set(list(range(10)))s4={}#这是字典的定义方法s5={9,10,11}#sets6={(1,2),3,’a’}s7={[1],(1,),1}#set的元素要…

  • Centos7单节点部署RabbitMQ

    Centos7单节点部署RabbitMQ

  • VS2017添加Eigen库

    VS2017添加Eigen库下载,并解压。解压之后的文件夹,重命名为eigen。在项目属性-&amp;gt;配置属性-&amp;gt;vc++目录-&amp;gt;包含目录,比如我的eigen3在d盘,包含目录就是:D:\eigen;然后就可以在工程中使用了,不会在报打不开文件的错误。Note:最好弄清楚程序中所使用的Eigen库的版本,因为最新版本可能对低版本的函数不支持…

    2022年10月11日
  • vim解决中文乱码问题

    vim解决中文乱码问题

  • Snappy压缩_ps压缩文件怎么安装

    Snappy压缩_ps压缩文件怎么安装1.功能说明使用snappy压缩来提升mapreduce和hbase的性能。其实就是用CPU换IO吞吐量和磁盘空间。配置并使用snappy有如下几点要求:首先需要hadoop集群的native库已经收到编译好,并且添加了对snappy的支持。编译hadoop源码之前安装了snappy并且编译时指定-Drequire.snappy参数。

  • 联想计算机的功能键,联想fn键怎么用 联想fn组合按键功能介绍【图文】「建议收藏」

    Fn键是每个笔记本上都拥有的按键,熟悉电脑的朋友都知道,笔记本为了考虑到超薄便携的特性,因此显示器上并没有像台式机那样的控制按钮,因此使用按钮调节笔记本显示器的亮度等参数就没办法实现。为此,笔记本将这些按钮集成到了键盘上,我们根据不同的情况就可以使用这些按钮调节电脑的某些参数。而Fn按键就是协助这些按钮实现操作的重要按键。那么在联想fn键和其他按键结合有什么作用呢?Fn+F1:如果我们在不按下fn…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号