1678 lyk与gcd】的更多相关文章

51nod 200题辣ψ(`∇´)ψ !庆祝! 51nod 1678 lyk与gcd | 容斥原理 题面 这天,lyk又和gcd杠上了. 它拥有一个n个数的数列,它想实现两种操作. 1:将 ai 改为b. 2:给定一个数i,求所有 gcd(i,j)=1 时的 aj 的总和. Input 第一行两个数n,Q(1<=n,Q<=100000). 接下来一行n个数表示ai(1<=ai<=10^4). 接下来Q行,每行先读入一个数A(1<=A<=2). 若A=1,表示第一种操作,…
1678 lyk与gcd 基准时间限制:2 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 这天,lyk又和gcd杠上了.它拥有一个n个数的数列,它想实现两种操作. 1:将  ai 改为b.2:给定一个数i,求所有 gcd(i,j)=1 时的  aj  的总和. Input 第一行两个数n,Q(1<=n,Q<=100000). 接下来一行n个数表示ai(1<=ai<=10^4). 接下来Q行,每行先读入一个数A(1<=A<=2). 若A=1,表示第一种…
1678 lyk与gcd  基准时间限制:2 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  关注 这天,lyk又和gcd杠上了. 它拥有一个n个数的数列,它想实现两种操作. 1:将  ai 改为b. 2:给定一个数i,求所有 gcd(i,j)=1 时的  aj  的总和. Input 第一行两个数n,Q(1<=n,Q<=100000). 接下来一行n个数表示ai(1<=ai<=10^4). 接下来Q行,每行先读入一个数A(1<=A<=2).…
1678 lyk与gcd 基准时间限制:2 秒 空间限制:131072 KB 这天,lyk又和gcd杠上了.它拥有一个n个数的数列,它想实现两种操作. 1:将  ai 改为b.2:给定一个数i,求所有 gcd(i,j)=1 时的  aj  的总和. Input 第一行两个数n,Q(1<=n,Q<=100000). 接下来一行n个数表示ai(1<=ai<=10^4). 接下来Q行,每行先读入一个数A(1<=A<=2). 若A=1,表示第一种操作,紧接着两个数i和b.(1&…
题面 传送门 题解 和这题差不多 //minamoto #include<bits/stdc++.h> #define R register #define pb push_back #define inline __inline__ __attribute__((always_inline)) #define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i) #define fd(i,a,b) for(R int i=(a),I=(b)-1;i>…
1678 lyk与gcd 基准时间限制:2 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 这天,lyk又和gcd杠上了.它拥有一个n个数的数列,它想实现两种操作. 1:将  ai 改为b.2:给定一个数i,求所有 gcd(i,j)=1 时的  aj  的总和. Input 第一行两个数n,Q(1<=n,Q<=100000). 接下来一行n个数表示ai(1<=ai<=10^4). 接下来Q行,每行先读入一个数A(1<=A<=2). 若A=1,表示第一种…
容斥定理所以可以用莫比乌斯函数来搞.逆向思维答案等于总和减去和他互质的.那么设f[i]=∑a[j] i|j.ans[i]=sum- ∑mo[j]*f[j] 跟bzoj2440那道题挺像的都是利用莫比乌斯函数来做容斥定理. 结果因为修改的时候只修改<sqrt(n)的一直WA...吃枣药丸... #include<cstdio> #include<cstring> #include<cctype> #include<algorithm> #include&…
点此看题面 大致题意: 一个长度为\(n\)的数组,实现两种操作:单点修改,给定\(i\)求\(\sum_{j=1}^na_j[gcd(i,j)=1]\). 莫比乌斯反演 考虑推一推询问操作的式子: \[\sum_{j=1}^na_j[gcd(i,j)=1]\] 按照莫比乌斯反演的一般套路,我们知道\(\sum_{p|x}\mu(p)=[x=1]\),因此我们枚举一个\(p\): \[\sum_{j=1}^na_j\sum_{p|i,p|j}\mu(p)\] 调整枚举顺序,得到: \[\sum_…
智力彻底没有了...看来再也拿不到奖金了QAQ... A B君的游戏 因为数据是9B1L,所以我们可以hash试一下数据... #include<cstdio> #include<cstring> #include<cctype> #include<algorithm> #define rep(i,s,t) for(int i=s;i<=t;i++) #define dwn(i,s,t) for(int i=s;i>=t;i--) using n…
51nod1434 区间LCM 跟容斥没有关系.首先可以确定的一个结论是:对于任意正整数,有1*2*...*n | (k+1)*(k+2)*...*(k+n).因为这就是$C_{n+k}^{k}$. 于是这题就有:m最多枚举到2n. 于是有一个做法:对n!分解质因数,然后枚举m的同时统计已获得的所有质因数的次幂,全部不小于n!时即可推出. 复杂度肯定不大于$O(n\log n)$. 同时这里有一个不会证的结论:找到n以内最大的$p^k$的数(p是质数),答案就是$2p^k$. $O(n\log…