莫比乌斯反演
TeJoy
这个作者很懒,什么都没留下…
展开
-
2019 南昌邀请赛 E.Interesting Trip(长链剖分优化DP+莫比乌斯反演)
2019 南昌邀请赛 E.Interesting Trip(长链剖分优化DP+莫比乌斯反演)现场防AK题,但是其实细心想并不是很难统计gcd>1gcd>1gcd>1的个数用莫比乌斯转化,统计gcd=x,xgcd=x,xgcd=x,x为质数及其倍数的数量,所以对应的系数就是−mu[i]-mu[i]−mu[i],问题就转化为统计树上路径长度为k的个数,点分必T,直接长链剖分,dp[x][j]dp[x][j]dp[x][j]表示距离x为j的路径长度,暴力统计即可,注意,实际上,我们枚举g原创 2021-03-15 20:46:11 · 196 阅读 · 0 评论 -
gym 101908 A(莫比乌斯反演)
gym 101908 A(莫比乌斯反演)思路:看到这题就很容易想到莫比乌斯反演的某道入门题,然后直接暴力推式子就好了,具体怎么推懒得写了,大家可以参考一下下面这篇,里面式子有个小地方写错了,不过无伤大雅,应该都能看出来https://blog.csdn.net/CaptainDAG/article/details/104870011需要注意3点1.LL2.有斜率不存在和平行x轴的情况,L==1的时候得统计3.sqrt后的上下界要确定好,不然wa到死都不知道4.牵扯到莫比乌斯的计算时,由于可能原创 2021-01-16 22:31:35 · 167 阅读 · 0 评论 -
2020 ccpc 吉林省赛 H
2020 ccpc 吉林省赛 H题意:给一组数aia_iai,求∑i=1n∑j=1n[gcd(ai,aj)=d]\sum\limits_{i=1}^n\sum\limits_{j=1}^{n}[gcd(a_i,a_j)=d]i=1∑nj=1∑n[gcd(ai,aj)=d]在赛场上我当时脑抽写了个假的算法,看似是O(Tmlogm)O(Tmlogm)O(Tmlogm),但实际上是O(Tmk)O(Tmk)O(Tmk),只能说这道题的出题人真的没有认真出数据,没有全为1的 x的数据,结果我跑过去才发原创 2020-11-09 20:52:56 · 1619 阅读 · 4 评论 -
BZOJ 4816(莫比乌斯反演
思路如上,感觉就是比较套路的莫比乌斯反演,写的时候注意下逆元和longlong就好了#include<iostream>#include<cstdio>#include<cmath>#include<algorithm>using namespace std;typedef long long ll;const int mod=1e9+7;const int maxn=2e6+5;int mu[maxn],prime[maxn/12],fa.原创 2020-08-10 22:44:18 · 101 阅读 · 0 评论 -
BZOJ 2154
已经写了很多道莫比乌斯的反演题了,这题需要注意的有3点。ll要取的小心点负数求模记得+mod,mu[i]预处理的时候记得!!这里是n,m两个变量,由于最后公式中彼此之间的制约r=min(n/(n/l),m/(m/l)),虽然我还无法完全证明一定得这样,但是以后遇到还是记得小心点,我一开始由于取了min还以为直接取(n/(n/l))就行了,太天真了,思路如下#include<iostream>#include<cstdio>#include<cstring>原创 2020-07-16 21:03:57 · 142 阅读 · 0 评论 -
BZOJ 2005(莫比乌斯反演
思路:似乎可以欧拉卷积,但我还不会,等我学了再来补最快的做法,下面这个调和级数o(nlogn)也挺快了原创 2020-07-15 15:11:37 · 123 阅读 · 0 评论 -
BZOJ 2440(莫比乌斯反演+二分
题意:求第k大的无平方因子的数,思路:二分+莫比乌斯反演,这题让我警醒,遇到1的倍数-(2,3,5)质数集合+(23,25…)…这类的计算,要向莫比乌斯的容斥系数方面想,思路如下另外赋一些数论分块的技巧#include<iostream>#include<cstdio>#include<cstring>#include<cmath>using namespace std;typedef long long ll;int mu[4000原创 2020-07-15 10:55:06 · 116 阅读 · 1 评论 -
BZOJ 2301(莫比乌斯反演+容斥原理
题意:对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数。思路:很显然这题和GCD那题几乎是一样的,一个二维前缀和容斥下加个反演然后就秒了#include<iostream>#include<cstdio>#include<cstring>using namespace std;typedef long long ll;const int maxn=5e4+原创 2020-07-15 10:40:48 · 184 阅读 · 0 评论 -
BZOJ 3994(约数个数和 莫比乌斯反演
题意:懒得码公式,思路我已经写在纸上发上来了,分别用了性质和倍数反演推导,因为有大佬和我说过有时候只能乖乖反演,所以都推导了一遍#include<iostream>#include<cstdio>#include<cstring>using namespace std;typedef long long ll;const int maxn=5e4+5;int mu[maxn],prime[maxn],cnt=0;ll sum[maxn],g[ma原创 2020-07-09 17:00:06 · 158 阅读 · 0 评论 -
BZOJ 1101 (莫比乌斯反演
思路:裸的莫比乌斯反演#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn=5e4+5;int prime[maxn/10],mu[maxn],sum[maxn],cnt=0;bool v[maxn];void init(){ v[1]=mu[1]=1;sum[1]=1; int k=maxn-5; for(i原创 2020-07-08 11:10:47 · 177 阅读 · 0 评论 -
洛谷P2257 YY的GCD (莫比乌斯反演
题意:思路:遇到这种和gcd有关的莫比乌斯反演,可以利用莫比乌斯函数的性质直接推,或者套路的设一波 f(d)为gcd(i,j)=d的个数,F(n)为gcd(i,j)=n或者n的倍数的个数,一般题目都是求f(n),由F(n)化简,具体推式子如下这里将pd设为T然后改为枚举T是一个常用的技巧,可以将复杂度由 O(质数个数根号n)降低为O(根号N),对于其中的f(T) 我们可以线性筛也可以埃筛,下面讲下线性筛,以下转载至洛谷这才是此题的最优解法,O(N+T根号n),当然一般来说比赛用埃筛的思路就原创 2020-07-08 08:11:28 · 191 阅读 · 0 评论