bzoj 3529: [Sdoi2014]数表
#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]数表的更多相关文章
- BZOJ 3529: [Sdoi2014]数表 [莫比乌斯反演 树状数组]
3529: [Sdoi2014]数表 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1399 Solved: 694[Submit][Status] ...
- bzoj 3529 [Sdoi2014]数表(莫比乌斯反演+BIT)
Description 有一张N×m的数表,其第i行第j列(1 < =i < =礼,1 < =j < =m)的数值为能同时整除i和j的所有自然数之和.给定a,计算数表中不大于a ...
- ●BZOJ 3529 [Sdoi2014]数表
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3529 题解: 莫比乌斯反演. 按题目的意思,令$f(i)$表示i的所有约数的和,就是要求: ...
- 【刷题】BZOJ 3529 [Sdoi2014]数表
Description 有一张n×m的数表,其第i行第j列(1<=i<=n,1<=j<=m)的数值为能同时整除i和j的所有自然数之和.给定a,计算数表中不大于a的数之和. In ...
- BZOJ 3529 [Sdoi2014]数表 (莫比乌斯反演+树状数组+离线)
题目大意:有一张$n*m$的数表,第$i$行第$j$列的数是同时能整除$i,j$的所有数之和,求数表内所有不大于A的数之和 先是看错题了...接着看对题了发现不会做了...刚了大半个下午无果 看了Po ...
- 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 ...
- BZOJ 3259 [Sdoi2014]数表 (莫比乌斯反演 + 树状数组)
3529: [Sdoi2014]数表 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 2321 Solved: 1187[Submit][Status ...
- 3529: [Sdoi2014]数表 - BZOJ
Description 有一张N×m的数表,其第i行第j列(1 < =i < =n,1 < =j < =m)的数值为能同时整除i和j的所有自然数之和.给定a,计算数表中不大于a ...
- 【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次 ...
随机推荐
- nginx安装方式
1.首先安装pcre库 获取pcre到一个目录 wget http://ftp.exim.llorien.org/pcre/pcre-8.21.tar.gz 解压缩pcre包 tar -zxvf pc ...
- VB类模块中属性的参数——VBA中Range对象的Value属性和Value2属性的一点区别
在VB中,属性是可以有参数的,而VBA中属性使用参数非常常见.比如最常用的:Worksheet.Range("A1:A10") VB的语法,使用参数的不一定是方法,也有可能是属性 ...
- JS对象深刻理解 - 2
JavaScript prototype 用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性, ...
- DOCTYPE声明作用及用法详解
一.浏览器呈现模式和doctype 有的网页是遵循标准而创作的,但也有很多不是.即使你不能创建遵循标准的网页,也希望浏览器根据标准来正确显示那些页.目前,大量网页充斥着大量非标准代码,它们仍能正常地工 ...
- iOS10 拍照崩溃问题
根据相对应得功能添加相关权限即可,没必要全部添加,后面的描述可以官方点,因为会以弹出框的形式访问的,比如相机权限后面的描述可以为:这个应用需要访问相机:后续如果发现其他iOS10上面的问题会及时更新的
- python连接mysql的驱动
对于py2.7的朋友,直接可以用MySQLdb去连接,但是MySQLdb不支持python3.x.这是需要注意的~ 那应该用什么python连接mysql的驱动呢,在stackoverflow上有人解 ...
- 易货Beta版本发布说明
说明 由于前几天确实比较忙,所以没来得及写发布说明. 功能 我们在beta版本主要加入了以下几个功能: 一:增加了用户的发布界面 二:增加了用户的购买界面 三:使用下拉刷新取代了之前的handler后 ...
- HashMap对象的深层克隆
1.java.util.HashMap 的 clone 方法是浅层copy,clone出来的对象,仅仅是原来对象的一个引用,并且对克隆出来的对象进行操作是无效的. 下面是个例子: import jav ...
- C# 基础知识总结
要学好C#,基础知识的重要性不言而喻,现将常用到的一些基础进行总结,总结如下: 1. 数据类型转换: 强制类型转换(Chart--> int): char cr='A'; int i = ...
- 哈希表(Hash Table)
参考: Hash table - Wiki Hash table_百度百科 从头到尾彻底解析Hash表算法 谈谈 Hash Table 我们身边的哈希,最常见的就是perl和python里面的字典了, ...