
莫比乌斯反演
二分抄代码
去了18ec没资格去19ec的反向训练选手
展开
-
【莫比乌斯反演】【bzoj2301】problem b
f(i)x∈[1,n],y∈[1,m],所有gcd=i的点对的数量,我们发现并不好求,于是再设F(i)x∈[1,n],y∈[1,m],所有满足i整除gcd(x,y)的点对的数量 ,F显然就是(n/i)(m /i),f根据莫比乌斯反演+gcd化为1简化一下,枚举倍数就变成了1到n/k啦,然后就用下标分块优化就可以求啦 #include<cstdio>#include<cstring>#define原创 2015-07-01 21:31:54 · 549 阅读 · 0 评论 -
HDU6053
求gcd(xxxxxx)>=2 ,那就是ans=a1*a2*...an - gcd(xxxxx)=1那么令f(i)为gcd(xxxxx)=i的序列数目,F(i)为gcd(xxxxx)=i的倍数的数目由莫比乌斯反演,我们要求的f(1)=从xushu的题解里面盗了张图。。。而我们一般的下底优化是sigma,这里是连乘,思路是一样的。枚举aj/i的答案k,找到a数组中有多少个答案是原创 2018-01-22 15:41:35 · 310 阅读 · 0 评论 -
【莫比乌斯反演】[BZOJ 2820 YY的GCD]
从黄学长那盗来的图 可以线筛预处理F,或者暴力枚举质数(这个复杂度我不能确定),按照素数粗略个数n/logn以及调和级数求和logn来看暴力的复杂度接近On 处理完F以后就是喜闻乐见的下底函数分块#include#include#define maxl 10000001int n,m;int no[maxl],p[maxl],mu[maxl];long long sum[m原创 2015-07-01 21:00:05 · 706 阅读 · 2 评论 -
bzoj 2818 Gcd
明明这里一组数据是o(n),bzoj2820一组数据是根号n,结果这个慢的能A,那个超时。。#include#include#define maxl 10000001int n,m;int no[maxl],p[maxl],mu[maxl];long long sum[maxl];long long ans;void shai(){ no[1]=1;mu[1]=1;原创 2018-01-20 21:26:38 · 200 阅读 · 0 评论 -
NOI2010能量采集
问题可以优化为 2*sigma(i)*sigma(j) gcd(i,j)-n*m,于是就是枚举gcd(i,j)的值为k,然后就是n/k,m/k,2*k*sigma(i)*sigma(j) gcd(i,j)==1 - n*m的值,也就是bzoj2820,枚举k,用下底块优化根号n求和,复杂度就是n^1.5#include#include#define maxl 100010long原创 2018-01-20 21:44:36 · 230 阅读 · 0 评论 -
HDU6390 GuGuFishtion
队友告诉我一个结论,phi(ab)/phi(a)phi(b)=gcd(ab)/phi(gcd(a,b)),那么我们发现这道题做完了。枚举gcd就行了,变成了NOI2010能量采集,然而当时我写的复杂度是nsqrt(n),并过不掉这题,于是队友写出了nlogn复杂度,发现还是T。。。于是我找到一篇NOI2010能量采集O(n)的题解https://blog.youkuaiyun.com/ThinFatty/ar...原创 2018-08-14 15:33:26 · 188 阅读 · 0 评论 -
HDU6363
先要知道几个结论gcd(2^a-1,2^b-1)=2^(gcd(a,b))-1;还得知道gcd(F[cnt1],F[cnt2])=F[gcd(cnt1,cnt2)],这两个结论都可用数学归纳法来推导,推导第二个还要知道F数组相邻两个元素互质,那么此题对于一个gcd来说,他的贡献是2^(F(gcd))-1这么多。而对于把n分成k份使得他的gcd为gcd的倍数,n本书相同,k个书架不同,那么方案数为c...原创 2018-08-11 10:36:08 · 397 阅读 · 0 评论