codeforces #305 C Mike and Foam
首先我们注意到ai<=50w
因为2*3*5*7*11*13*17=510510
所以其最多含有6个质因子
我们将每个数的贡献分离,
添加就等于加上了跟这个数相关的互素对
删除就等于减去了跟这个数相关的互素对
问题转化为了求跟某个数相关的互素对的数目
我们可以用容斥来解决
即加上至少跟这个数有0个公共质因子的数
减去至少跟这个数有1个公共质因子的数
加上至少跟这个数又2个公共质因子的数……
这样我们就可以在2^6的时间算出答案了
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<vector>
#include<cmath>
using namespace std; typedef long long LL;
const int maxn=200010;
int n,m,x,tot;
int a[maxn];
bool check[maxn];
vector<int>V[maxn];
int p[500010],cnt=0;
bool vis[500010];
int Num[500010];
LL ans=0; void Get_Prime(){
for(int i=2;i<=500000;++i){
if(!vis[i])p[++cnt]=i;
for(int j=1;j<=cnt;++j){
if(1LL*p[j]*i>500000)break;
vis[p[j]*i]=true;
if(i%p[j]==0)break;
}
}return;
}
void push(int now){
int x=a[now],lim=(int)(sqrt(x));
for(int i=1;i<=cnt;++i){
if(p[i]>lim)break;
if(x%p[i]==0){
V[now].push_back(p[i]);
while(x%p[i]==0)x/=p[i];
if(x==1)break;
}
}
if(x>1)V[now].push_back(x);
}
void add(int now){
int k=V[now].size();
for(int i=0;i<(1<<k);++i){
int bit=0,o=1;
for(int j=0;j<k;++j)if(i>>j&1)bit++,o*=V[now][j];
if(bit&1)ans-=Num[o];
else ans+=Num[o];
Num[o]++;
}return;
}
void del(int now){
int k=V[now].size();
for(int i=0;i<(1<<k);++i){
int bit=0,o=1;
for(int j=0;j<k;++j)if(i>>j&1)bit++,o*=V[now][j];
Num[o]--;
if(bit&1)ans+=Num[o];
else ans-=Num[o];
}return;
} int main(){
scanf("%d%d",&n,&m);
Get_Prime();
for(int i=1;i<=n;++i)scanf("%d",&a[i]),push(i);
for(int i=1;i<=m;++i){
scanf("%d",&x);
if(check[x])del(x),check[x]=false;
else add(x),check[x]=true;
cout<<ans<<endl;
}return 0; }
codeforces #305 C Mike and Foam的更多相关文章
- Codeforces 547C/548E - Mike and Foam 题解
目录 Codeforces 547C/548E - Mike and Foam 题解 前置芝士 - 容斥原理 题意 想法(口胡) 做法 程序 感谢 Codeforces 547C/548E - Mik ...
- codeforces #305 A Mike and Frog
挺简单的题目,但是有一堆恶心的边界 在刨去恶心的边界之后: 假定我们知道两边的循环节为b1,b2 其中h第一次到达目标的时间为a1,a2 又知道对于答案t t=a1+b1*t1=a2+b2*t2 不妨 ...
- codeforces #305 B Mike and Feet
跟之前做过的51Nod的移数博弈是一样的QAQ 我们考虑每个数的贡献 定义其左边第一个比他小的数的位置为L 定义其右边第一个比他小的数的位置为R 这个可以用排序+链表 或者 单调队列 搞定 那么对于区 ...
- codeforces #305 D Mike and Fish
正解貌似是大暴搜? 首先我们考虑这是一个二分图,建立网络流模型后很容易得出一个算法 S->行 容量为Num[X]/2; 行->列 容量为1 且要求(x,y)这个点存在 列->T 容量 ...
- codeforces #305 E Mike and friends
原问题可以转化为:给定第k个字符串,求它在L-R的字符串里作为子串出现了多少次 定义子串为字符串的某个前缀的某个后缀(废话) 等价于我们把一个字符串插入到trie里,其过程中每个经过的节点和其向上的f ...
- hdu4135-Co-prime & Codeforces 547C Mike and Foam (容斥原理)
hdu4135 求[L,R]范围内与N互质的数的个数. 分别求[1,L]和[1,R]和n互质的个数,求差. 利用容斥原理求解. 二进制枚举每一种质数的组合,奇加偶减. #include <bit ...
- cf#305 Mike and Foam(容斥)
C. Mike and Foam time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- 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 sh ...
- codeforces 547c// Mike and Foam// Codeforces Round #305(Div. 1)
题意:给出数组arr和一个空数组dst.从arr中取出一个元素到dst为一次操作.问每次操作后dst数组中gcd等于1的组合数.由于数据都小于10^6,先将10^6以下的数分解质因数.具体来说从2开始 ...
随机推荐
- PHP读取HTML生成doc
PHP代码如下: <?php //获取1.html文档的内容(包括html代码) $result = file_get_contents('./word.html'); echo "$ ...
- 自己动手实现RPC
一.需求:用户管理系统(UMS),仓库管理系统(WMS),订单管理系统(OMS) 现在OMS有一张订单表:[订单id,用户id,商品id,订单状态,订单时间],需要在客户端展示此订单对应的用户详情和商 ...
- Linux服务器性能分析与调优
一 linux服务器性能查看 1.1 cpu性能查看 1.查看物理cpu个数: cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc ...
- asp.net mvc 通过StyleBundle添加样式后,没有作用
在App_Start/BundleConfig配置 导入bootstrap,但不起作用,代码如下: bundles.Add(new StyleBundle("~/Content/bootst ...
- php项目,别人无法访问自己(windows 系统)上Apache服务器原因(转载)
别人无法访问自己电脑上的Apache服务器,其中最大的原因是因为Windows防火墙的因素. 1.有安装防火墙的,把防火墙关闭 2.windows默认带防火墙的,进入 控制面板-系统和安全-Windo ...
- js判断PC端还是移动端
function goPAGE() { if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobi ...
- 终于等到你!WebOptimizer - A bundler and minifier for ASP.NET Core
迷人的 ASP.NET Core 有一个美中不足之处,自从一开始接触它到现在,我就一直不喜欢,一直想找到替代品,甚至想过自己实现一个,它就是 BundlerMinifier . 昨天面对 bundle ...
- 常用邮箱的 IMAP/POP3/SMTP 设置
通过网上查找的资料和自己的总结完成了下面的文章,看完之后相信大家对这三种协议会有更深入的理解.如有错误的地方望指正. POP3 POP3是Post Office Protocol 3的简称,即邮局协议 ...
- 转 docker创建私有仓库和k8s中使用私有镜像
docker私有仓库建立 环境说明我们选取192.168.5.2做私有仓库地址yum install docker -y1.启动docker仓库端口服务 docker run -d -p 5000:5 ...
- 简单的可以跑起来的dubbo例子
原文地址:https://blog.csdn.net/jingyangV587/article/details/78901937 项目结构: maven项目,内部三个module. <?xml ...