【CF870F】Paths

题意:一张n个点的图,对于点i,j(i!=j),如果gcd(i,j)!=1,则i到j有一条长度为1的无向边。令dis(i,j)表示从i到j的最短路,如果i无法到j,则dis(i,j)=0。求$\sum\limits_{1\le i < j \le n}dis(i,j)$。

n<=10^7

题解:容易发现dis(i,j)不超过3,所以我们可以分出好多种情况讨论一下,但是每种情况都不好搞啊。

我们先把点1扔了,算出总点对数。我们定义一个数x是坏的当且仅当x是质数且x>n/2。然后讨论:

1.dis(x,y)=0。这种情况发生当且仅当x或y是坏的,容易计算答案。
2.dis(x,y)=1。就是求有多少不互质的数对嘛,用欧拉函数算一下就行。
3.dis(x,y)=2。我们设x的最小质因子为p(x),那么这样的路径形如x->p(x)p(y)->y。此时还要讨论:
  1.如果x,y都是质数,则xy<=n,这个暴力统计就行。
  2.如果x是好质数y是合数,则x*p(y)<=n且x不是y的约数。我们先求出所有x*p(y)<=n的个数,然后去掉x是y的约数的点对。
    这个怎么算呢?如果x==p(y),这样的点对数很容易求。如果x>p(y),我们可以从大到小枚举x,那么y/x<=n/x,我们同时枚举所有的y/x,如果p(y/x)小于x,那么我们统计上它的贡献;否则它对以后的x都不会产生贡献。最后我们再把p(y/x)=x的去掉即可。

  3.如果x,y是互质的合数,依旧用欧拉函数算一下就行。
4.dis(x,y)=3。形如x->2p(x)->2p(y)->y。用总数-上面的3个即可得到。

#include <cstdio>
#include <cstring>
#include <iostream>
const int N=10000010;
typedef long long ll;
int pri[N/5],mn[N],sx[N],phi[N],sp[N],sn[N];
int n,num,m;
ll cnt0,cnt1,cnt2,cnt3,tot,now;
inline int min(const int &a,const int &b) {return a<b?a:b;}
int main()
{scanf("%d",&n);int i,j;phi[1]=mn[1]=1;for(i=2;i<=n;i++){if(!sx[i]){pri[++num]=i,mn[i]=i,phi[i]=i-1,sx[i]=1;if(i<=n/2) m=num;}sp[i]=num;for(j=1;j<=num&&i*pri[j]<=N;j++){mn[i*pri[j]]=pri[j];if(i%pri[j]==0){sx[i*pri[j]]=sx[i],phi[i*pri[j]]=phi[i]*pri[j];break;}sx[i*pri[j]]=sx[i]+1,phi[i*pri[j]]=phi[i]*(pri[j]-1);}}tot=1ll*(n-1)*(n-2)/2;for(i=m+1;i<=num;i++)    cnt0+=pri[i]-2+n-pri[i]-(num-i);for(i=2;i<=n;i++) cnt1+=i-1-phi[i];for(i=2;i<=n;i++) if(mn[i]!=i)   cnt2+=phi[i]-sp[i]+sx[i]-1;for(i=2;i<=n;i++)  if(mn[i]!=i){cnt2+=min(m,sp[n/mn[i]]);if(1ll*mn[i]*mn[i]<=n) cnt2--;}for(j=2,i=m;i>=1;i--){for(;j<=n/pri[i];j++) if(mn[j]<pri[i]) sn[mn[j]]++,now++;now-=sn[pri[i]];cnt2-=now;}for(i=1;i<=m;i++) for(j=1;j<i&&pri[i]*pri[j]<=n;j++)    cnt2++;cnt3=tot-cnt0-cnt1-cnt2;printf("%lld",cnt1+cnt2*2+cnt3*3);return 0;
}

转载于:https://www.cnblogs.com/CQzhangyu/p/8157601.html

【CF870F】Paths 分类讨论+数学相关推荐

  1. HDU 6627 equation(模拟,分类讨论)

    题意:给你n个ai和bi,给你C,求解方程: 分析:初中数学,分类讨论破除绝对值符号.每两个零点之间的区域都对应一个一元一次方程,把这些零点排序之后可以很容易得到每个区间的方程,每个区间都解一个一元一 ...

  2. 分类讨论 ---- 2020 icpc 上海 Walker (二分 or 思维分类讨论)

    题目链接 题目大意: 就是两个人在坐标轴上面,有起始的坐标p1,p2p1,p2p1,p2,和速度v1,v2v1,v2v1,v2,问你访问完这长度为nnn的数轴最短时间是多少? 解题思路: 大佬有直接二 ...

  3. CF1471 D - Strange Definition(思维,分类讨论,lcm,gcd的性质,数论)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #694 (Div. 2) D 很好的一道数论思维题 D - Str ...

  4. Unfair contest 模拟-分类讨论

    题意 : 两人比赛,n个裁判,给分范围[1,h][1, h][1,h],去掉s个最高分和t个最低分,给出n - 1个裁判的给分,第n个裁判想让第1个人赢,并且最小化给1的分数a[n]a[n]a[n] ...

  5. 2020ICPC(上海) - Walker(分类讨论+二分)

    题目链接:点击查看 题目大意:在长度为 n 的数轴上给出两个人的初始位置和速度,问使得每个位置至少被一个人走过的时间是多少 题目分析:分类讨论题目,分四种情况讨论即可,设 p1 < p2: p1 ...

  6. 【UOJ#33】【UR #2】树上GCD(长链剖分/根号分类讨论)

    [UOJ#33][UR #2]树上GCD 求解树上两个点到lca的距离的最大公约数是k的对数 首先我们很容易就想到莫比乌斯反演,那么利用倍数形式,我们只需要求解是i的倍数的对数. 考虑枚举lca,这个 ...

  7. uoj#246. 【UER #7】套路(dp+分块?分类讨论?)

    题目链接 分析: 目前为止我只能理解dp部分 我就喜欢这种单纯不做作的题目 一看名字就明白了这道题的本质 中二的题目描述 很显然,我们的关键就是求出最小相似度 朴素算法n^4 如果我们现在有一个权值数 ...

  8. Vasya and Multisets CodeForces - 1051C 模拟|分类讨论

    题意:把数组分成两个集合 每个集合中元素数量为1的个数相同(此个数可以是0) 分析: 这类问题就是要各种可能情况考虑到     然后分类讨论     完整地正确分类就AC     否则gg 如果数量为 ...

  9. P3842 [TJOI2007]线段(线性dp,分类讨论)

    P3842 [TJOI2007]线段 题意 [TJOI2007]线段 题目描述 在一个 n×nn \times nn×n 的平面上,在每一行中有一条线段,第 iii 行的线段的左端点是(i,Li)(i ...

  10. POJ 1664 求m个苹果放入n个盘子的不同放法数目 递归 分类讨论

    通过分类讨论,将规模较大的问题转换成规模较小的相同问题,学会"降维",将索引值不断降小,就可以递归求解 设f(m,n)为把m个苹果放到n个盘子中的方法数,m>=0,n> ...

最新文章

  1. 【tensorflow】】模型优化(一)指数衰减学习率
  2. 仿Twitter的公告效果
  3. quantrader和matlab不匹配,【Matlab量化投资】支持向量机择时策略
  4. QQ在屏幕边缘自动隐藏不能正常显示
  5. ruby 数据sql操作
  6. 马斯克挽尊,回应为何电动皮卡车窗玻璃怼不过钢球...
  7. 【转】软件开发常用术语
  8. c++ 暂停功能_苹果拥抱Rust,正在将C代码移植到Rust
  9. 一文带你完全掌握机器人DH参数建模(详细步骤+实例+代码)
  10. 斯皮尔曼相关系数范围_什么是斯皮尔曼相关系数
  11. NAT(地址转换技术)详解
  12. 调整计算机硬盘大小,详细教您怎么调整硬盘分区
  13. 【机器学习】在生产环境使用Kafka构建和部署大规模机器学习
  14. 又是苦海泛起爱恨,在世间难逃命运的新一周
  15. html九宫格排列图片,10款jQuery实现的360浏览器九宫格图片拖拽排序
  16. 车辆保险详细说明举例介绍
  17. 精卫填海——大数据安全与隐私保护
  18. 头哥 (Educoder)数据结构与算法实验:实验11 TYJ动态规划
  19. opencv实战——图像矫正算法深入探讨
  20. 金融科技大数据产品推荐:荣之联·风报—人工智能企业情报分析系统

热门文章

  1. 时间机器与iCloud云盘:应该使用哪个来备份你的Mac?
  2. 只需一个设置命令隐藏 MacBook Pro 浏海
  3. iOS开发之来自一线开发者的Swift学习资源推荐
  4. Compressor 4.6.1 for Mac(视频转码工具)
  5. SQLPro Studio for Mac(数据库管理器)2022.14
  6. 可以修改Mac地址的工具WiFiSpoof for Mac
  7. 2个技巧让Mac常用文件夹在Finder打开更便捷
  8. 深度剖析Spring Cloud底层原理
  9. 传奇电子cq9跳高高、跳起来规则与操作技巧
  10. tomcat7简单优化