Code:

  1. #include <cstdio>
  2. #include <algorithm>
  3. #include <cstring>
  4.  
  5. #define ll long long
  6. #define setIO(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout)
  7. const long long mod = 2147483648;
  8. const long long N = 100008;
  9. const int maxn = 100009 ;
  10.  
  11. using namespace std;
  12.  
  13. struct M{
  14. int delta;
  15. int id;
  16. }opt[maxn];
  17.  
  18. int prime[maxn],tot,vis[maxn],mu[maxn],g[maxn],answer[maxn];
  19. int cmp2(M a,M b){ return a.delta < b.delta; }
  20. void Init(){
  21. mu[1] = 1;
  22. for(int i=2;i < maxn; ++i) {
  23. if(!vis[i]) prime[++tot] = i, mu[i] = -1;
  24. for(int j=1;j <= tot && (ll)i * prime[j] <= N; ++j) {
  25. vis[i * prime[j]] = 1;
  26. if(i % prime[j]==0) {
  27. mu[i * prime[j]] = 0;
  28. break;
  29. }
  30. mu[i*prime[j]]=-mu[i];
  31. }
  32. }
  33. for(int i=1;i<maxn;++i)
  34. for(ll j=1;(ll)j*i<=N;++j) g[i*j] += i;
  35. for(int i=1;i<maxn;++i) opt[i].delta=g[i],opt[i].id=i;
  36. sort(opt+1,opt+maxn,cmp2);
  37. }
  38. struct BIT{
  39. ll C[maxn];
  40. int lowbit(int t) { return t & (-t); }
  41. void update(int x,ll k) {
  42. while(x < maxn) {
  43. C[x]+=k, C[x]%=mod;
  44. x+=lowbit(x);
  45. }
  46. }
  47. ll query(int x){
  48. ll sum=0;
  49. while(x>0) sum+=C[x],sum%=mod,x-=lowbit(x);
  50. return sum;
  51. }
  52. }tree;
  53. ll work(int n,int m,int p) {
  54. if(n>m) swap(n,m);
  55. long long sum=0;
  56. for(int i=1,j;i <= n;i=j+1) {
  57. j=min(n/(n/i),m/(m/i));
  58. sum+=(n/j)*(m/j)*(tree.query(j)-tree.query(i-1));
  59. sum%=mod;
  60. }
  61. return sum;
  62. }
  63. struct P{ int n,m,a,id; }node[maxn];
  64. int cmp(P a,P b){ return a.a<b.a; }
  65. void oper(int p){ for(int i=1;i*opt[p].id<=N;++i) tree.update(opt[p].id*i,((ll)opt[p].delta*mu[i]+mod)%mod); }
  66. int main(){
  67. //setIO("input");
  68. Init();
  69. int T;
  70. scanf("%d",&T);
  71. for(int i=1;i<=T;++i) scanf("%d%d%d",&node[i].n,&node[i].m,&node[i].a),node[i].id=i;
  72. sort(node+1,node+1+T,cmp);
  73. int last=1;
  74. for(int i=1;i<=T;++i) {
  75. int j=last;
  76. while(opt[j].delta <= node[i].a) oper(j),++j;
  77. last=j;
  78. answer[node[i].id]=(int)work(node[i].n,node[i].m,node[i].a);
  79. }
  80. for(int i=1;i<=T;++i) printf("%d\n",(answer[i]+mod)%mod);
  81. return 0;
  82. }

  

BZOJ3529: [Sdoi2014]数表 莫比乌斯反演_树状数组的更多相关文章

  1. 【bzoj3529】[Sdoi2014]数表 莫比乌斯反演+离线+树状数组

    题目描述 有一张n×m的数表,其第i行第j列(1 <= i <= n ,1 <= j <= m)的数值为能同时整除i和j的所有自然数之和.给定a,计算数表中不大于a的数之和. ...

  2. 【BZOJ3529】数表(莫比乌斯反演,树状数组)

    [BZOJ3529]数表(莫比乌斯反演,树状数组) 题解 首先不管\(A\)的范围的限制 要求的东西是 \[\sum_{i=1}^n\sum_{j=1}^m\sigma(gcd(i,j))\] 其中\ ...

  3. BZOJ3529: [Sdoi2014]数表(莫比乌斯反演 树状数组)

    题意 题目链接 Sol 首先不考虑\(a\)的限制 我们要求的是 \[\sum_{i = 1}^n \sum_{j = 1}^m \sigma(gcd(i, j))\] 用常规的套路可以化到这个形式 ...

  4. bzoj3529: [Sdoi2014]数表 莫比乌斯反演

    题意:求\(\sum_{i=1}^n\sum_{j=1}^nf(gcd(i,j))(gcd(i,j)<=a),f(x)是x的因子和函数\) 先考虑没有限制的情况,考虑枚举gcd为x,那么有\(\ ...

  5. BZOJ3529: [Sdoi2014]数表(莫比乌斯反演,离线)

    Description 有一张 n×m 的数表,其第 i 行第 j 列(1 <= i <= n, 1 <= j <= m)的数值为 能同时整除 i 和 j 的所有自然数之和.给 ...

  6. bzoj [SDOI2014]数表 莫比乌斯反演 BIT

    bzoj [SDOI2014]数表 莫比乌斯反演 BIT 链接 bzoj luogu loj 思路 \[ \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}a*[f[ ...

  7. BZOJ_5055_膜法师_树状数组+离散化

    BZOJ_5055_膜法师_树状数组+离散化 Description 在经历过1e9次大型战争后的宇宙中现在还剩下n个完美维度, 现在来自多元宇宙的膜法师,想偷取其中的三个维度为伟大的长者续秒, 显然 ...

  8. BZOJ_3653_谈笑风生_树状数组

    BZOJ_3653_谈笑风生_树状数组 Description 设T 为一棵有根树,我们做如下的定义: ? 设a和b为T 中的两个不同节点.如果a是b的祖先,那么称“a比b不知道 高明到哪里去了”. ...

  9. BZOJ_3196_Tyvj 1730 二逼平衡树_树状数组套主席树

    BZOJ_3196_Tyvj 1730 二逼平衡树_树状数组套主席树 Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 1.查询k在区间内的排 ...

随机推荐

  1. 网络教程(13) 深入TCP协议

    应用层向TCP层发送用于网间传输的.用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元(MTU)的限制).之后TCP把结果包传给IP层 ...

  2. 原生js实现form表单序列化

    当我们有form表单而且里面的表单元素较多时,咱们总不能一个个去获取表单元素内的值来进行拼接吧!这样会很让人蛋疼!为了方便与后台交互并且提高自己的开发效率,并且不让你蛋疼:我们一起用原生来写一个表单序 ...

  3. 第一章 JavaScript 简介

    1.1   JavaScript 的简史 JavaScript 诞生于1995年 ,后由 欧洲计算机制造商协会( ECMA,European Computer Manufacturers Associ ...

  4. 《你又怎么了我错了行了吧》【Alpha】Scrum meeting 5

    第五天 日期:2019/6/18 前言: 第5次会议在女生宿舍召开 冲刺第5天,对所有工作做了总结.继续完善编码工作. 1.1 今日完成任务情况以及明天任务安排 姓名 当前阶段任务 下一阶段任务 刘 ...

  5. 《代码敲不队》第八次团队作业:Alpha冲刺 第一天

    项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 代码敲不队 作业学习目标 掌握软件编码实现的工程要求. 第一天 日期:2019/6/15 团队项目 ...

  6. struct 模块解决 TCP黏包问题

    首先来看一下产生黏包现象的一段代码: # server.py 服务端 import socket ​ sk = socket.socket() sk.bind(('127.0.0.1',9000)) ...

  7. Mysql学习总结(37)——Mysql Limit 分页查询优化

    select * from table LIMIT 5,10; #返回第6-15行数据 select * from table LIMIT 5; #返回前5行 select * from table ...

  8. JAVA基础总结【面试】

    前言 近间陆续面试了不少的求职的前(JAVA).后(WEB)端开发人员,包括实习生.应届毕业生.一两年工作经验的.也有三四年工作经验的,也算见过了比较多的开发人员,想在这里做个总结,本次主要讲一讲面试 ...

  9. HDU 4343

    二分加贪心,水过了.贪心是因为,不能存在覆盖,当存在覆盖时,留小坐标的. #include <iostream> #include <cstdio> #include < ...

  10. Cocos2d-x碰撞检測

    假设不适用Box2D物理引擎.那么要进行Cocos2d-x的碰撞检測那我们的方法往往就是进行"矩形和点"."矩形和矩形"这样粗略的碰撞检測.我们一般採取开启sc ...