容斥原理+Fib


  Orz HE的神犇们

  蒟蒻只能改出来第三题……实在太弱

  官方题解:http://pan.baidu.com/s/1o6MdtQq

  fib的神奇性质……还有解密a[i]的过程……这里就不细说了……

  主要学习了一下容斥>_<(然而还是没什么感觉?)

  写在代码注释里了……

  1. //Round3 C
  2. #include<cstdio>
  3. #include<set>
  4. #include<cstring>
  5. #include<cstdlib>
  6. #include<iostream>
  7. #include<algorithm>
  8. #define rep(i,n) for(int i=0;i<n;++i)
  9. #define F(i,j,n) for(int i=j;i<=n;++i)
  10. #define D(i,j,n) for(int i=j;i>=n;--i)
  11. #define pb push_back
  12. using namespace std;
  13. typedef long long LL;
  14. inline int getint(){
  15. int r=,v=; char ch=getchar();
  16. for(;!isdigit(ch);ch=getchar()) if (ch=='-') r=-;
  17. for(; isdigit(ch);ch=getchar()) v=v*-''+ch;
  18. return r*v;
  19. }
  20. const int N=,M=,P=1e9+;
  21. /*******************template********************/
  22.  
  23. LL f[M],a[N],s[M],g[M];
  24. int n,w[M];
  25. inline LL gcd(LL a,LL b){return b ? gcd(b,a%b) : a;}
  26. int main(){
  27. #ifndef ONLINE_JUDGE
  28. freopen("C.in","r",stdin);
  29. freopen("C.out","w",stdout);
  30. #endif
  31. n=getint(); LL mx=;
  32. F(i,,n){
  33. int c=getint(),A,B;
  34. if (c){
  35. A=getint(),B=getint();
  36. a[i]=(A+B-gcd(A,B));
  37. }else a[i]=getint();
  38. w[a[i]]++;
  39. mx=max(mx,a[i]);
  40. }
  41. F(i,,mx)
  42. for(int j=i;j<=mx;j+=i)
  43. s[i]+=w[j];//s[i]表示i的倍数一共出现了多少次(约数相关)
  44. f[]=f[]=;
  45. F(i,,mx){
  46. f[i]=f[i-]+f[i-];
  47. if (f[i]>=P) f[i]-=P;
  48. }
  49. LL ans=;
  50. F(i,,mx) g[i]=s[i]*(s[i]-)/%P,ans+=f[i-]*w[i]%P;
  51. //g[i]表示有多少对a[i]和a[j]之间的gcd包含i这个因子
  52. D(i,mx,)
  53. for(int j=i+i;j<=mx;j+=i)
  54. g[i]-=g[j];
  55. //容斥的过程
  56. //x作为gcd出现的次数=x作为公约数出现的次数-x的倍数作为gcd出现的次数
  57. F(i,,mx) ans+=g[i]*f[i-]%P;
  58. printf("%lld\n",(ans%P+P)%P);
  59. return ;
  60. }

【ContestHunter】【弱省胡策】【Round3】(C)的更多相关文章

  1. 弱省胡策 Magic

    弱省胡策 Magic 求\(n\)个点\(n\)的条边的简单联通图的个数. 毒瘤,还要写高精. 我们枚举环的大小\(k\),\(\displaystyle ans=\sum_{k=3}^nC_n^k ...

  2. 【弱省胡策】Round #5 Count

    [弱省胡策]Round #5 Count 太神仙了. \(DP\)做法 设\(f_{n,m,d,k}\)表示\(n*m\)的矩阵,填入第\(k\)个颜色,并且第\(k\)个颜色最少的一列上有\(d\) ...

  3. luoguP3769 [CH弱省胡策R2]TATT

    luoguP3769 [CH弱省胡策R2]TATT PS:做这题前先切掉 P4148简单题,对于本人这样的juruo更助于理解,当然dalao就当练练手吧 题目大意: 现在有n个四维空间中的点,请求出 ...

  4. 【ContestHunter】【弱省胡策】【Round0】(A)&【Round1】(B)

    DP+容斥原理or补集转化?/KD-Tree 唔……突然发现最早打的两场(打的最烂的两场)没有写记录……(太烂所以不忍记录了吗... 还是把搞出来了的两道题记录一下吧= =勉强算弥补一下缺憾…… Ro ...

  5. 【ContestHunter】【弱省胡策】【Round2】

    官方题解:http://wyfcyx.is-programmer.com/posts/95490.html A 目前只会30分的暴力……DP好像很神的样子0.0(听说可以多次随机强行算? //Roun ...

  6. 【ContestHunter】【弱省胡策】【Round8】

    平衡树维护凸壳/三角函数+递推+线段树 官方题解:http://pan.baidu.com/s/1sjQbY8H 洛阳城里春光好 题目大意:(其实出题人已经写的很简短了……直接copy的-_-.sor ...

  7. 【ContestHunter】【弱省胡策】【Round7】

    Prufer序列+高精度+组合数学/DP+可持久化线段树 Magic 利用Prufer序列,我们考虑序列中每个点是第几个插进去的,再考虑环的连接方式,我们有$$ans=\sum_{K=3}^n N^{ ...

  8. 【ContestHunter】【弱省胡策】【Round6】

    KMP/DP+树链剖分+线段树/暴力 今天考的真是……大起大落…… String QwQ题意理解又出错了……(还是说一开始理解了,后来自己又忘了为什么是这样了?) 反正最后的结果就是……我当成:后面每 ...

  9. 【ContestHunter】【弱省胡策】【Round5】

    反演+FFT+构造+DP 写了这么多tag,其实我一个也不会 A 第一题是反演……数据范围10W,看着就有种要用FFT等神奇算法的感觉……然而蒟蒻并不会推公式,只好写了20+10分的暴力,然而特判30 ...

随机推荐

  1. 命名空间中的“MvcBuildViews”。 无效

    VS2013转VS2010时出现如下错误: 错误提示: 警告 1 元素 命名空间“http://schemas.microsoft.com/developer/msbuild/2003”中的“Prop ...

  2. 升级Mac X Mavericks MacMiv 无法启动

    今天把Mac 系统升级到了 Mac X Mavericks ,确实有不少的惊喜.虽然体验不出Mac X Mavericks拥有更强的性能/更好的电池表现,但是新版的Safari浏览器的提供了更方便的主 ...

  3. 简单Spinner

    mainActivity package com.zzw.spinner; import android.app.Activity; import android.content.Context; i ...

  4. android中常用菜单(menu)的基本知识

    (一)选项菜单 1.简单的创建菜单: @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMe ...

  5. spark概论,补充

    基本概念 RDD spark最大的亮点是提出RDD(Resilient Distributed Dataset)的概念,也就是可伸缩的分布式数据集合,本身只读,可恢复.spark本身不做物理储存,通过 ...

  6. 修改后的SQL分页存储过程,利用2分法,支持排序

    /****** Object: StoredProcedure [dbo].[sys_Page_v3] Script Date: 08/13/2014 09:32:28 ******/ SET ANS ...

  7. 转换framebuffer实现安卓截图

    编译出了RECOVERY肯定需要截图分享的啦,可是又不能通过DDMS截图~ 那就只好通过提取手机的fb0文件来实现截图. 首先你需要ADB~ 嗯,这个都没有的话你就别看下去了... 还需要ffmpeg ...

  8. openSUSE13.1无法打开Yast的安装/移除软件管理软件的解决办法·(未解决,临时方法) 收获:有问题,读日志

    看了日志发现错误在于Ruby,新的YaST是基于Ruby的,而我用rvm安了新版本Ruby,日志里这么出错: 2014-08-22 20:20:57 <3> linux-vfpp.site ...

  9. 微信分享朋友链接显示js代码

    通常自己做的一个页面想通过微信像朋友分享时,展示的标题和描述都是不是自己想要的,自己查了一些资料,原来是通过js来进行控制 展示效果如下: 标题.描述.还有分享的图片都是有js来控制的. js代码如下 ...

  10. Cygwin ssh服务配置 (SecureCRT连接Cygwin配置)

    1.运行ssh-host-config 这里需要注意的是标红部分,输入的用户名或密码要符合计算机的用户名或密码策略(尤其是公司有权限限制的电脑). $ ssh-host-config *** Quer ...