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次 ...
随机推荐
- 工作中积累整理-CSS样式表(一)
[layout] clear:该属性的值指出了不允许有浮动对象的边. 默认值:none none: 允许两边都可以有浮动对象 both: 不允许有浮动对象 left: 不允许左边有浮动对象 right ...
- QT笔记之VS2012 TCP传送文件
注意:工程监理后,因为用到网路,所以要加入对应的库 服务器: .h #ifndef TCPFILE_H #define TCPFILE_H #include <QtWidgets/QWidget ...
- Install Ansible on Mac OSX
from: https://devopsu.com/guides/ansible-mac-osx.html and : https://devopsu.com/guides/ansible-post- ...
- 广播Broadcast Receiver
广播的类型: 1.标准广播(Normal broadcat) 完全异步执行的广播,所有广播接收器同一时间接收广播消息. 效率高,但无法被截断. 2.有序广播 同步执行的广播,同一时刻只能有一个广播接收 ...
- PCB走线分析——直角、差分、蛇形线
PCB直角走线的影响 布线(Layout)是PCB设计工程师最基本的工作技能之一.走线的好坏将直接影响到整个系统的性能,大多数高速的设计理论也要最终经过 Layout 得以实现并验证,由此可见,布 ...
- redis 常用配置
参数说明 redis.conf 配置项说明如下: 1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no 2. 当Redis以守护进程方式 ...
- Javascript学习笔记:3种递归函数中调用自身的写法
①一般的通过名字调用自身 function sum(num){ if(num<=1){ return 1; }else{ return num+sum(num-1); } } console.l ...
- Docker镜像文件存储结构
docker相关文件存放在:/var/lib/docker目录下 镜像的存储结构主要分两部分,一是镜像ID之间的关联,一是镜像ID与镜像名称之间的关联,前者的结构体叫Graph,后者叫TagStore ...
- 关于STM32的抢占式优先级说明。——Arvin
关于STM32的中断设置.--Arvin 中断 STM32 很多人在配置STM32中断时对固件库中的这个函数NVIC_PriorityGroupConfig()配置优先级分组方式,会很不理解,尤其是看 ...
- weex 小结--内建模块
使用以下模块时,需要导入依赖:var *** = require('@weex-module/****'); 1. navigator --像浏览器一样切换页面 2. webview(module) ...