#include<cstdio>
#include<iostream>
#include<algorithm>
#define M 200009
//#define N 100000
using namespace std;
struct data
{
int x,y,a1,yy;
}a[M];
struct dat
{
int F,id;
}b[M];
int n,mo[M],zhan[M],tnt,sum[M],st=,ans[M],N;
bool mark[M];
bool cmp(data b1,data b2)
{
return b1.a1<b2.a1;
}
bool cmp1(dat b1,dat b2)
{
return b1.F<b2.F;
}
void jia(int a1,int a2)
{
for(;a1<=N;a1+=a1&-a1)
sum[a1]+=a2;
return;
}
void mobiwus()
{
mo[]=;
for(int i=;i<=N;i++)
{
if(!mark[i])
{
zhan[++tnt]=i;
mo[i]=-;
}
for(int j=;i*zhan[j]<=N&&j<=tnt;j++)
{
mark[i*zhan[j]]=;
if(i%zhan[j])
mo[i*zhan[j]]=mo[i]*mo[zhan[j]];
else
mo[i*zhan[j]]=;
}
}
return;
}
int query(int a1)
{
int ss=;
for(;a1;a1-=a1&-a1)
ss+=sum[a1];
return ss;
}
void su(int n,int m,int j)
{
if(n>m)
swap(n,m);
int last=,re=;
for(int i=;i<=n;i=last+)
{
last=min(n/(n/i),m/(m/i));
re+=(n/i)*(m/i)*(query(last)-query(i-));
}
ans[j]=re;
return;
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].a1);
a[i].yy=i;
N=max(N,a[i].x);
N=max(N,a[i].y);
}
sort(a+,a+n+,cmp);
mobiwus();
for(int i=;i<=N;i++)
{
b[i].F=;
b[i].id=i;
}
for(int i=;i<=N;i++)
for(int j=;j*i<=N;j++)
b[i*j].F+=i;
sort(b+,b+N+,cmp1);
for(int i=;i<=n;i++)
{
for(;b[st].F<=a[i].a1&&st<=N;st++)
for(int j=;j*b[st].id<=N;j++)
jia(j*b[st].id,b[st].F*mo[j]);
su(a[i].x,a[i].y,a[i].yy);
}
for(int i=;i<=n;i++)
printf("%d\n",ans[i]&0x7fffffff);
return ;
}

莫比乌斯反演

bzoj 3529: [Sdoi2014]数表的更多相关文章

  1. BZOJ 3529: [Sdoi2014]数表 [莫比乌斯反演 树状数组]

    3529: [Sdoi2014]数表 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1399  Solved: 694[Submit][Status] ...

  2. bzoj 3529 [Sdoi2014]数表(莫比乌斯反演+BIT)

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

  3. ●BZOJ 3529 [Sdoi2014]数表

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3529 题解: 莫比乌斯反演. 按题目的意思,令$f(i)$表示i的所有约数的和,就是要求: ...

  4. 【刷题】BZOJ 3529 [Sdoi2014]数表

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

  5. BZOJ 3529 [Sdoi2014]数表 (莫比乌斯反演+树状数组+离线)

    题目大意:有一张$n*m$的数表,第$i$行第$j$列的数是同时能整除$i,j$的所有数之和,求数表内所有不大于A的数之和 先是看错题了...接着看对题了发现不会做了...刚了大半个下午无果 看了Po ...

  6. BZOJ 3529 [Sdoi2014]数表 ——莫比乌斯反演 树状数组

    $ans=\sum_{i=1}^n\sum_{j=1}^n\sigma(gcd(i,j))$ 枚举gcd为d的所有数得到 $ans=\sum_{d<=n}\sigma(d)*g(d)$ $g(d ...

  7. BZOJ 3259 [Sdoi2014]数表 (莫比乌斯反演 + 树状数组)

    3529: [Sdoi2014]数表 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 2321  Solved: 1187[Submit][Status ...

  8. 3529: [Sdoi2014]数表 - BZOJ

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

  9. 【BZOJ】3529: [Sdoi2014]数表

    题意:求 $$\sum_{i=1}^{n} \sum_{j=1}^{m} \sum_{d|(i, j)} d 且 (\sum_{d|(i, j)} d)<=a$$ n, m<=1e5,q次 ...

随机推荐

  1. iOS上传文件代码,自定义组装body

    以下代码为上传文件所用代码,简单方便,搞了好久,终于知道这么简单的方式来上传. 其它类库也就是把这几句代码封装的乱七八糟得,让你老久搞不懂原理.不就是在body上面加点字符串,body下面加点字符串, ...

  2. 简单利用Scanner对文件进行解析

    public class AvPrice{    static int count = 0;    static int sum = 0;    public static void main(Str ...

  3. SQL函数

    1,字符串截取拼接 CONCAT(),'****');SUBSTRING_INDEX(c.context,'}',1);SUBSTRING_INDEX(a.task_context,':',-1) a ...

  4. JAVA 1.4 算术运算

    1. 如果在一个算术运算中有int,double,float那么最终运算的结果是double,那么也就是说参与运算的类型和得到的结果:结果一定是参与运算的精度最高的那个类型 2. 算术运算中的除法 i ...

  5. ES6 对象增强和结构赋值

    The enhanced Object literals: ES6 has added some new syntax-based extensions to {} object literal fo ...

  6. Mysql主从同步遇到的一些问题

    为提供更快的访问速度,在不同的地区增加了一台只供访问的从服务器.因此要将主服务器的数据全部备份过去,并且设置主从同步 假设: 主服务器IP:192.168.1.10 从服务器IP:192.168.1. ...

  7. 配置sublime text 3 的Python开发环境

    为了在sublime实现像Python自带idle一样的F5交互功能: 首先安装package control然后install Sublime REPL:然后配置 Preference-->P ...

  8. C# 编程实现非自相交多边形质心

    计算公式公式: http://en.wikipedia.org/wiki/Centroid#Centroid_of_polygon 多边形的质心: 一个非自相交的n个顶点的多边形(x0,y0), (x ...

  9. Inverted sentences

    And ever has it been that love knows not its own depth until the hour of separation.  除非临到了别离的时候,爱永远 ...

  10. Vs2010在C#类文件头部添加文件注释的方法

    步骤: 1.VS2010 中找到(安装盘符以C盘为例) 32位操作系统路径:C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Item ...