Code:

#include <cstdio>
#include <algorithm>
#include <cstring> #define ll long long
#define setIO(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout)
const long long mod = 2147483648;
const long long N = 100008;
const int maxn = 100009 ; using namespace std; struct M{
int delta;
int id;
}opt[maxn]; int prime[maxn],tot,vis[maxn],mu[maxn],g[maxn],answer[maxn];
int cmp2(M a,M b){ return a.delta < b.delta; }
void Init(){
mu[1] = 1;
for(int i=2;i < maxn; ++i) {
if(!vis[i]) prime[++tot] = i, mu[i] = -1;
for(int j=1;j <= tot && (ll)i * prime[j] <= N; ++j) {
vis[i * prime[j]] = 1;
if(i % prime[j]==0) {
mu[i * prime[j]] = 0;
break;
}
mu[i*prime[j]]=-mu[i];
}
}
for(int i=1;i<maxn;++i)
for(ll j=1;(ll)j*i<=N;++j) g[i*j] += i;
for(int i=1;i<maxn;++i) opt[i].delta=g[i],opt[i].id=i;
sort(opt+1,opt+maxn,cmp2);
}
struct BIT{
ll C[maxn];
int lowbit(int t) { return t & (-t); }
void update(int x,ll k) {
while(x < maxn) {
C[x]+=k, C[x]%=mod;
x+=lowbit(x);
}
}
ll query(int x){
ll sum=0;
while(x>0) sum+=C[x],sum%=mod,x-=lowbit(x);
return sum;
}
}tree;
ll work(int n,int m,int p) {
if(n>m) swap(n,m);
long long sum=0;
for(int i=1,j;i <= n;i=j+1) {
j=min(n/(n/i),m/(m/i));
sum+=(n/j)*(m/j)*(tree.query(j)-tree.query(i-1));
sum%=mod;
}
return sum;
}
struct P{ int n,m,a,id; }node[maxn];
int cmp(P a,P b){ return a.a<b.a; }
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); }
int main(){
//setIO("input");
Init();
int T;
scanf("%d",&T);
for(int i=1;i<=T;++i) scanf("%d%d%d",&node[i].n,&node[i].m,&node[i].a),node[i].id=i;
sort(node+1,node+1+T,cmp);
int last=1;
for(int i=1;i<=T;++i) {
int j=last;
while(opt[j].delta <= node[i].a) oper(j),++j;
last=j;
answer[node[i].id]=(int)work(node[i].n,node[i].m,node[i].a);
}
for(int i=1;i<=T;++i) printf("%d\n",(answer[i]+mod)%mod);
return 0;
}

  

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. Python——Day2(基础知识练习一)

    1.执行Python脚本的两种方式1)调用解释器 Python +绝对路径+文件名称2)调用解释器 Python +相对路径+文件名称 2.简述位.字节的关系8位为1个字节 3.简述ASCII.uni ...

  2. JavaScript进阶【一】JavaScript模块化开发的基础知识

    //模块化的最初写法 //1.最初写法 //下面的m1和m2就组成了一个模块 //缺点:"污染"了全局变量,无法保证不与其他模块发生变量名冲突,而且模块成员之间看不出直接关系. f ...

  3. Project Euler 41 Pandigital prime( 米勒测试 + 生成全排列 )

    题意:如果一个n位数恰好使用了1至n每个数字各一次,我们就称其为全数字的.例如,2143就是一个4位全数字数,同时它恰好也是一个素数. 最大的全数字的素数是多少? 思路: 最大全排列素数可以从 n = ...

  4. liunx 里面安装phpstudy环境s

    ngixwget -c http://lamp.phpstudy.net/phpstudy.bin  chmod +x phpstudy.bin    #权限设置 ./phpstudy.bin #运行 ...

  5. 3.1、Jinja2模板引擎

    形式最简单的 Jinja2 模板就是一个包含响应文本的文件.示例 3-1 是一个 Jinja2 模板,它和示例 2-1 中 index() 视图函数的响应一样. 示例 3-1 templates/in ...

  6. Nginx的反向代理的配置

    1.linux下的方向代理(前提域名和P已经映射好了的) 在linux中的输入命令:whereis nginx 查看当前nginx的安装目录 显示 nginx: /usr/local/nginx 命令 ...

  7. groupadd(创建组)重要参数介绍

    -g :值定用户组GID值.除非接 -o 参数(如:groupadd -g 666 -o oldboy),否则ID值必须是唯一的数字(不能为负数). 如果不指定 -g 参数,则默认从500开始 

  8. Linux中的gpio口使用方法

    Linux中的IO使用方法 应该是新版本内核才有的方法.请参考:./Documentation/gpio.txt文件 提供的API:驱动需要包含 #include <linux/gpio.h&g ...

  9. 面试准备专题——JVM,类编译,类加载,内存错误

    jvm体系总体分四大块: 类的加载机制 jvm内存结构 GC算法 垃圾回收 GC分析 命令调优 类的加载机制 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法 ...

  10. [Golang] 从零開始写Socket Server(3): 对长、短连接的处理策略(模拟心跳)

    通过前两章,我们成功是写出了一套凑合能用的Server和Client,并在二者之间实现了通过协议交流.这么一来,一个简易的socket通讯框架已经初具雏形了,那么我们接下来做的.就是想办法让这个框架更 ...