n<=10000000的图,满足:如果(i,j)>1就连一条边权1的无相变,问所有d(u,v) (u<=v)--u到v的最短路之和。

首先1和>n/2的质数都是孤立的点。然后两个数x,y如果(x,y)>1最短路就1,如果(x,y)=1且x,y都不是1或>n/2的质数一定能走,具体这么走:$P_x$--x的最小质因子,那就$x->p_x*p_y->y$,那这样都走不了,还有:$x->p_x*2->p_y*2->y$这种一定走得了,因为x或y如果是合数那$p_x$最大是根号的,再*2根本爆不了;如果是质数那由于<=n/2,所以自己*2一定不会爆,因此就统计1的路径数,2的路径数和3的路径数即可。

1的路径数:$\sum_{1<=x<=n,1<=y<=n}(x,y)>1=\sum_{x=1}^{n}x-1-\varphi (x)$。

3的路径数用总的减掉1和2的。

2的路径数,也就是满足$(x,y)=1$且$p_x*p_y<=n$且$x>1,y>1$且x,y都不是大于n/2的质数的:

(1)x,y都是合数:那直接枚举合数,然后$\sum_{y是合数}^{n} \varphi (y)- (<=y的质数) + (x的质因子数)-1$,注意到这一条说的质数、质因子都是包括>n/2的。

(2)x质y合:那也枚举合数,$\sum_{y是合数}^{n} s_y-(y的质因子数)$,其中$s_y$表示比$x*p_y<=n$的质数x的数量,注意到这一条说的质数、质因子都是不包括>n/2的。

(3)x质y质,那枚举质数,$\sum_{y是质数}^{n} x*y<=n$,即$x<=n/y$,注意到这里枚举的质数是<=n/2的,而且这里统计的x也是<=n/2的。

OK!

  1. #include<string.h>
  2. #include<stdlib.h>
  3. #include<stdio.h>
  4. //#include<assert.h>
  5. #include<algorithm>
  6. //#include<iostream>
  7. using namespace std;
  8.  
  9. int n;
  10. #define maxn 10000011
  11. int prime[maxn/],lp=,phi[maxn],small[maxn],sum[][maxn],sonofbitch[][maxn]; bool notprime[maxn];
  12. void pre(int n)
  13. {
  14. phi[]=; sum[][]=sum[][]=;
  15. for (int i=;i<=n;i++)
  16. {
  17. sum[][i]=sum[][i-]+(!notprime[i] && i*<=n);
  18. sum[][i]=sum[][i-]+(!notprime[i]);
  19. if (!notprime[i]) {prime[++lp]=i; phi[i]=i-; sonofbitch[][i]=(i*<=n);
  20. sonofbitch[][i]=; small[i]=i;}
  21. for (int j=;j<=lp && 1ll*i*prime[j]<=n;j++)
  22. {
  23. notprime[i*prime[j]]=; small[i*prime[j]]=prime[j];
  24. if (i%prime[j])
  25. {
  26. phi[i*prime[j]]=phi[i]*(prime[j]-);
  27. sonofbitch[][i*prime[j]]=sonofbitch[][i]+(prime[j]*<=n);
  28. sonofbitch[][i*prime[j]]=sonofbitch[][i]+;
  29. }
  30. else
  31. {
  32. phi[i*prime[j]]=phi[i]*prime[j];
  33. sonofbitch[][i*prime[j]]=sonofbitch[][i];
  34. sonofbitch[][i*prime[j]]=sonofbitch[][i];
  35. break;
  36. }
  37. }
  38. }
  39. }
  40.  
  41. int main()
  42. {
  43. scanf("%d",&n); pre(n);
  44. #define LL long long
  45. LL tot1=,tot2=,tot3=,m=n-(sum[][n]-sum[][n])-,tot=m*1ll*(m-)/;
  46.  
  47. for (int i=;i<=n;i++) tot1+=i--phi[i];
  48.  
  49. for (int i=;i<=n;i++)
  50. if (notprime[i])
  51. tot2+=phi[i]-sum[][i]+sonofbitch[][i]-+sum[][n/small[i]]-sonofbitch[][i];
  52. else if (i*<=n) tot2+=sum[][min(i-,n/i)];
  53.  
  54. tot3=tot-tot1-tot2;
  55.  
  56. printf("%lld\n",tot1+tot2*+tot3*);
  57. return ;
  58. }

Codeforces870F. Paths的更多相关文章

  1. [LeetCode] Binary Tree Paths 二叉树路径

    Given a binary tree, return all root-to-leaf paths. For example, given the following binary tree: 1 ...

  2. [LeetCode] Unique Paths II 不同的路径之二

    Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. How m ...

  3. [LeetCode] Unique Paths 不同的路径

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...

  4. leetcode : Binary Tree Paths

    Given a binary tree, return all root-to-leaf paths. For example, given the following binary tree: 1 ...

  5. UVA 10564 Paths through the Hourglass[DP 打印]

    UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...

  6. LeetCode-62-Unique Paths

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...

  7. Leetcode Unique Paths II

    Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. How m ...

  8. POJ 3177 Redundant Paths(边双连通的构造)

    Redundant Paths Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13717   Accepted: 5824 ...

  9. soj 1015 Jill's Tour Paths 解题报告

    题目描述: 1015. Jill's Tour Paths Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description Every ...

随机推荐

  1. jsp中提示修改成功

    修改成功提示 servert包 request.setAttribute("success", "修改失败"); 效果而 function f(){ var n ...

  2. [BZOJ1257][CQOI2007]余数之和sum 数学+分块

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1257 题目所求为$$Ans=\sum_{i=1}^nk%i$$ 将其简单变形一下$$Ans ...

  3. CentOS7.5搭建LAMP环境

    导言 LAMP环境搭建,网上可以搜到很多的结果.为什么我还要整理一下呢,是因为有些网上给出的解决办法可能仅适用于某些特定的环境下,并不一定适用于所有出现问题的情况. 当然我写本篇的目的也不是保证所有的 ...

  4. Oracle11g 审计介绍

    审计是记录数据库上方方面面操作.事件等信息,是数据安全管理的重要手段. 开启审计,虽然不同级别的审计会有不同,但是对数据库的性能是有影响的,并且占用存储空间. --1.创建审计数据专用表空间 crea ...

  5. 阿里云服务器基本搭建_错误1_Permission denied (publickey)

    首先 修改这两个密码 然后重启服务器就可以了

  6. js 作用域 ?????

    ///*第一种情况 */ //var mycars = new Array() //mycars[0] = 0; //mycars[1] = 1; //mycars[2] = 2; //functio ...

  7. windows sdk 设置窗体透明

    #define WINVER 0x0501 #include <windows.h> /* Declare Windows procedure */ LRESULT CALLBACK Wi ...

  8. JavaScript exec()方法

    exec() 方法用于检索字符串中的正则表达式的匹配.返回一个数组,其中存放匹配的结果.如果未找到匹配,则返回值为 null. var str = "我今年25岁明年26岁后年27岁千年24 ...

  9. JZOJ5776. 【NOIP2008模拟】小x游世界树

    题目:[NOIP2008模拟]小x游世界树: 题目的附加题解给的很清楚,这里只给一个代码: #include<iostream> #include<cstdio> #inclu ...

  10. NOIP2016玩具迷题

    题目大意就不说了,反正水水就过了. 主要在于找01关系. 代码: #include<cstdio> int n,m; struct node { ]; int f; }a[]; int m ...