题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2005

  题意:题目转换后的模型就是求Σ(gcd(x,y)), 1<=x<=n, 1<=y<=m。。

  容易想到n^2logn的方法,ΣΣ(gcd(x,y)*2-1),但是这里会超时,因此我们需要优化。我们令f[d]表示(x,y),1<=x<=n, 1<=y<=m的所有对数中gcd(x,y)=d的个数,那么容易求出所有对数中(x,y)的约数为d的个数为(n/d)*(m/d),然后减去f[i*d],i>=2就行了...

  1. //STATUS:C++_AC_16MS_2052KB
  2. #include <functional>
  3. #include <algorithm>
  4. #include <iostream>
  5. //#include <ext/rope>
  6. #include <fstream>
  7. #include <sstream>
  8. #include <iomanip>
  9. #include <numeric>
  10. #include <cstring>
  11. #include <cassert>
  12. #include <cstdio>
  13. #include <string>
  14. #include <vector>
  15. #include <bitset>
  16. #include <queue>
  17. #include <stack>
  18. #include <cmath>
  19. #include <ctime>
  20. #include <list>
  21. #include <set>
  22. #include <map>
  23. using namespace std;
  24. //#pragma comment(linker,"/STACK:102400000,102400000")
  25. //using namespace __gnu_cxx;
  26. //define
  27. #define pii pair<int,int>
  28. #define mem(a,b) memset(a,b,sizeof(a))
  29. #define lson l,mid,rt<<1
  30. #define rson mid+1,r,rt<<1|1
  31. #define PI acos(-1.0)
  32. //typedef
  33. typedef __int64 LL;
  34. typedef unsigned __int64 ULL;
  35. //const
  36. const int N=;
  37. const int INF=0x3f3f3f3f;
  38. const int MOD=,STA=;
  39. const LL LNF=1LL<<;
  40. const double EPS=1e-;
  41. const double OO=1e15;
  42. const int dx[]={-,,,};
  43. const int dy[]={,,,-};
  44. const int day[]={,,,,,,,,,,,,};
  45. //Daily Use ...
  46. inline int sign(double x){return (x>EPS)-(x<-EPS);}
  47. template<class T> T gcd(T a,T b){return b?gcd(b,a%b):a;}
  48. template<class T> T lcm(T a,T b){return a/gcd(a,b)*b;}
  49. template<class T> inline T lcm(T a,T b,T d){return a/d*b;}
  50. template<class T> inline T Min(T a,T b){return a<b?a:b;}
  51. template<class T> inline T Max(T a,T b){return a>b?a:b;}
  52. template<class T> inline T Min(T a,T b,T c){return min(min(a, b),c);}
  53. template<class T> inline T Max(T a,T b,T c){return max(max(a, b),c);}
  54. template<class T> inline T Min(T a,T b,T c,T d){return min(min(a, b),min(c,d));}
  55. template<class T> inline T Max(T a,T b,T c,T d){return max(max(a, b),max(c,d));}
  56. //End
  57.  
  58. LL f[N];
  59. int n,m;
  60.  
  61. int main(){
  62. freopen("in.txt","r",stdin);
  63. int i,j,low;
  64. LL ans;
  65. scanf("%d%d",&n,&m);
  66. low=Min(n,m);
  67. ans=;
  68. for(i=low;i>;i--){
  69. f[i]=(LL)(n/i)*(m/i);
  70. for(j=i+i;j<=low;j+=i)f[i]-=f[j];
  71. ans+=f[i]*(i*-);
  72. }
  73. printf("%lld\n",ans);
  74. return ;
  75. }

Bzoj-2005 能量采集 gcd,递推的更多相关文章

  1. BZOJ 2005 能量采集

    Description 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量.在这些植物采集能量后,栋栋再使用一个能量汇集机器把这些植物采集到的能量汇集到一起. 栋栋的植物种得 ...

  2. BZOJ 2005 能量采集(容斥原理)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2005 题意:给定n和m,求 思路:本题主要是解决对于给定的t,有多少对(i,j)满足x= ...

  3. bzoj 2005 能量采集 莫比乌斯反演

    我们要求的是∑ni=1∑mj=1(2×gcd(i,j)−1) 化简得2×∑ni=1∑mj=1gcd(i,j)−n×m 所以我们现在只需要求出∑ni=1∑mj=1gcd(i,j)即可 ∑ni=1∑mj= ...

  4. 【BZOJ】1002: [FJOI2007]轮状病毒 递推+高精度

    1002: [FJOI2007]轮状病毒 Description 给定n(N<=100),编程计算有多少个不同的n轮状病毒. Input 第一行有1个正整数n. Output 将编程计算出的不同 ...

  5. BZOJ 3329: Xorequ(数位dp+递推)

    传送门 解题思路 可以把原式移项得\(x\)^\(2x\)=\(3x\),而\(x+2x=3x\),说明\(x\)二进制下不能有两个连续的\(1\).那么第一问就是一个简单的数位\(dp\),第二问考 ...

  6. 洛谷 1447 [NOI2010]能量采集——容斥/推式子

    题目:https://www.luogu.org/problemnew/show/P1447 1.容斥原理 求 f [ i ] 表示 gcd==i 的对数,先 f [ i ] = (n/i) * (m ...

  7. bzoj2005 能量采集 gcd 容斥

    ans = sigma_x(sigma_y(gcd(x,y) * 2 - 1)),1<=x<=n,1<=y<=m 枚举x,y,O(nmlogn),超时 换个角度,枚举d = g ...

  8. BZOJ 3930: [CQOI2015]选数 递推

    3930: [CQOI2015]选数 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pro ...

  9. BZOJ 1177 [Apio2009]Oil(递推)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1177 [题目大意] 给出一个矩阵,从中选出3个k*k且不相交的矩阵,使得其总和最大 [ ...

随机推荐

  1. the service mysql56 was not found in the Windows services的解决办法

    mysql无法启动,无法改变状态-CSDN论坛-CSDN.NET-中国最大的IT技术社区 http://bbs.csdn.net/topics/390943788   具体描述: 关闭,重启mysql ...

  2. 97. Interleaving String

    题目: Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example,Given: ...

  3. Git教程(11)把本地的项目传到远程

    1,在远程建立仓库 得到远程仓库地址,如:  https://github.com/paulboone/ticgit 2,进入到项目根目录,初始化一个本地仓库 $ git init 3,为本地仓库添加 ...

  4. Android 常用UI控件之TabHost(5)Tab栏在底部且在最上层也不盖tab页

    tab栏在底部 <TabHost android:id="@android:id/tabhost" android:layout_width="match_pare ...

  5. Webform——Repeater多表联合显示

    对于一个表里,通过外键连接如何显示另一个表的数据,前Winform里可以用封装类来实现. 对于Webform,可以用封装类,也可以用Repeater的ItemDataBound事件(//在项被绑定数据 ...

  6. IE的体系和webrowser

    IE的体系 WebBrowser Host首先,必须有COM的基础知识,因为IE本身就是COM技术的典型应用.我们看到最上层是WebBrowser的宿主(Host),也就是任何你想重用(ReUse)w ...

  7. fingerprintjs

    Valve/fingerprintjs FingerprintJS - 在浏览器端实现指纹识别

  8. NoSql数据库使用半年后在设计上面的一些心得 (转)

    http://www.cnblogs.com/AllenDang/p/3507821.html NoSql数据库这个概念听闻许久了,也陆续看到很多公司和产品都在使用,优缺点似乎都被分析的清清楚楚.但我 ...

  9. apache开源项目--Jackrabbit

    Apache Jackrabbit 是由 Apache Foundation 提供的 JSR-170 的开放源码实现.. 随着内容管理应用程序的日益普及,对用于内容仓库的普通.标准化 API 的需求已 ...

  10. 【转】Tomcat配置文件入门

    Tomcat 基本配置 tomcat读取配置文件 首先简单说一下tomcat是如何读取配置文件的.tomcat在启动时,首先找系统变量CATALINA_BASE,如果没有,则找CATALINA_HOM ...