BZOJ_3529_[Sdoi2014]数表_莫比乌斯反演+树状数组
Description
Input
Output
对每组数据,输出一行一个整数,表示答案模2^31的值。
Sample Input
4 4 3
10 10 5
Sample Output
148
$\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}f(gcd(i,j))$
$\sum\limits_{d=1}^{n}f(d)\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}[gcd(i,j)=d]$
$\sum\limits_{d=1}^{n}f(d)\sum\limits_{i=1}^{n/d}\sum\limits_{j=1}^{m/d}[gcd(i,j)=1]$
$\sum\limits_{d=1}^{n}f(d)\sum\limits_{i=1}^{n/d}\sum\limits_{j=1}^{m/d}\sum\limits_{p|gcd(i,j)}\mu(p)$
$\sum\limits_{d=1}^{n}f(d)\sum\limits_{p|n}\mu(p)n/dp*m/dp$
$\sum\limits_{Q=1}^{n}n/Q*m/Q\sum\limits_{d|Q}f(d)\mu(Q/d)$
$g(n)=\sum\limits_{d|n}f(d)\mu(n/d)$
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
using namespace std;
#define N 100050
#define M 100000
typedef unsigned int un;
int prime[N],cnt,miu[N],ys[N],ysh[N],id[N];
un c[N],ans[N];
bool vis[N];
struct A {
int id,n,m,a;
bool operator < (const A &x) const {
return a<x.a;
}
}q[N];
void fix(int x,un v) {for(;x<=M;x+=x&(-x)) c[x]+=v;}
un inq(int x) {un re=0; for(;x;x-=x&(-x)) re+=c[x]; return re;}
inline bool cmp(const int &x,const int &y) {return ysh[x]<ysh[y];}
void init() {
int i,j; miu[1]=1;
for(id[1]=1,i=2;i<=M;i++) {
if(!vis[i]) {
prime[++cnt]=i; miu[i]=-1;
}
for(j=1;j<=cnt&&i*prime[j]<=M;j++) {
int y=i*prime[j]; vis[y]=1;
if(i%prime[j]==0) {miu[y]=0;break;}
miu[y]=-miu[i];
}
id[i]=i;
}
for(i=1;i<=M;i++) for(j=i;j<=M;j+=i) ysh[j]+=i;
sort(id+1,id+M+1,cmp);
}
void add(int x) {
int i;
for(i=x;i<=M;i+=x) {
fix(i,ysh[x]*miu[i/x]);
}
}
un solve(un n,un m) {
int i,lst; if(n>m) swap(n,m); un re=0;
for(i=1;i<=n;i=lst+1) {
lst=min(n/(n/i),m/(m/i));
re+=(n/i)*(m/i)*(inq(lst)-inq(i-1));
}
return re;
}
int main() {
init();
int Q;
scanf("%d",&Q);
int i,j=1;
for(i=1;i<=Q;i++) scanf("%d%d%d",&q[i].n,&q[i].m,&q[i].a),q[i].id=i;
sort(q+1,q+Q+1);
for(i=1;i<=Q;i++) {
while(ysh[id[j]]<=q[i].a&&j<=M) add(id[j]),j++;
ans[q[i].id]=solve(q[i].n,q[i].m);
}
for(i=1;i<=Q;i++) printf("%u\n",ans[i]&((1u<<31)-1));
}
BZOJ_3529_[Sdoi2014]数表_莫比乌斯反演+树状数组的更多相关文章
- 洛谷P3312 [SDOI2014]数表(莫比乌斯反演+树状数组)
传送门 不考虑$a$的影响 设$f(i)$为$i$的约数和 $$ans=\sum\limits_{i=1}^n\sum\limits_{j=1}^nf(gcd(i,j))$$ $$=\sum\limi ...
- 【BZOJ3529】【SDOI2014】数表 (莫比乌斯反演+树状数组)
传送门 Description 有一张$n\times m$的数表,其第$i$行第$j$列 $(1≤i≤n,1≤j≤m)$ 的数值为能同时整除$i$和$j$的所有自然数之和.现在给定$a$,计算数表中 ...
- BZOJ 3259 [Sdoi2014]数表 (莫比乌斯反演 + 树状数组)
3529: [Sdoi2014]数表 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 2321 Solved: 1187[Submit][Status ...
- 【BZOJ3529】[Sdoi2014]数表 莫比乌斯反演+树状数组
[BZOJ3529][Sdoi2014]数表 Description 有一张N×m的数表,其第i行第j列(1 < =i < =礼,1 < =j < =m)的数值为能同时整除i和 ...
- BZOJ 3529 [Sdoi2014]数表 (莫比乌斯反演+树状数组+离线)
题目大意:有一张$n*m$的数表,第$i$行第$j$列的数是同时能整除$i,j$的所有数之和,求数表内所有不大于A的数之和 先是看错题了...接着看对题了发现不会做了...刚了大半个下午无果 看了Po ...
- BZOJ 3529: [Sdoi2014]数表 [莫比乌斯反演 树状数组]
3529: [Sdoi2014]数表 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1399 Solved: 694[Submit][Status] ...
- 【BZOJ3529】【莫比乌斯反演 + 树状数组】[Sdoi2014]数表
Description 有一张N×m的数表,其第i行第j列(1 < =i < =礼,1 < =j < =m)的数值为 能同时整除i和j的所有自然数之和.给定a,计算数表中不大于 ...
- 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 ...
- BZOJ3529: [Sdoi2014]数表(莫比乌斯反演 树状数组)
题意 题目链接 Sol 首先不考虑\(a\)的限制 我们要求的是 \[\sum_{i = 1}^n \sum_{j = 1}^m \sigma(gcd(i, j))\] 用常规的套路可以化到这个形式 ...
随机推荐
- ssh port forwarding
SSH端口转发,总是忘记,今天记录下.端口转发有两种,一个是local一个是remote(可能还有一种dynamic,还没有研究) 贴个链接 https://www.ssh.com/ssh/tunne ...
- 二、Silverlight中使用MVVM(二)——提高
在第一篇文章中的示例中,我们已经简单的了解了应用MVVM模式的流程,我的本意是你已经了解了一点MVVM的概念,然后又没有一个较好的例子学习,可以跟着我一起学习MVVM模式,所以这个部分,都是没有理论知 ...
- 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bccced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中
// test20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...
- 在WPF对话框中如何验证用户提供的数据
在WPF中,MS在msdn的WPF应用程序开发中对用户输入的数据验证做了示范,基本思想就是添加各种类型的校验规则,比如最大最小值.字符串长度.是否为空等等,在后在界面绑定数据时添加数据字段的校验.这样 ...
- python推荐系统库
Python推荐系统库——Surprise 在Python中实现你自己的推荐系统 python-recsys:一款实现推荐系统的python库
- iOS10.3 UILable中划线失效问题
iOS10.3系统的一个Bug,在UILable中含有中文时,中划线会失效 NSString *priceStr = [NSString stringWithFormat:@"%.2f元&q ...
- formData.append("username", "Groucho"); input 文件大小
formData.append("username", "Groucho"); https://developer.mozilla.org/en-US/docs ...
- FastJson 技术
最近开始做淘宝的开放平台.阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征: 速度最快,测试表明,fastjson具有极快的性能,超越任其他的Jav ...
- Mac下php版本不支持imagetfftext函数问题
brew rm freetype jpeg libpng gd zlib brew install freetype jpeg libpng gd zlib brew install php71 ht ...
- 详解使用EM算法的半监督学习方法应用于朴素贝叶斯文本分类
1.前言 对大量需要分类的文本数据进行标记是一项繁琐.耗时的任务,而真实世界中,如互联网上存在大量的未标注的数据,获取这些是容易和廉价的.在下面的内容中,我们介绍使用半监督学习和EM算法,充分结合大量 ...