题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3529

挺恶心的数论TAT。。。

设f[i]是i的约数和,这个可以nln(n)扫出来。

ans=∑d[n/d]*[m/d]*∑i|d f[i]*μ[d/i]

然后由于只有f[i]<=a是有用的,所以对给的a从小到大排序,对求的f[i]从小到大排序,用个树状数组维护一下。

由于分块思想,可以枚举d,然后会出现一段n/i是一样的,所以把那部分区间求和就可以了。

#include<cstring>
#include<iostream>
#include<algorithm>
#include<cstdio>
#define rep(i,l,r) for (int i=l;i<=r;i++)
#define down(i,l,r) for (int i=l;i>=r;i--)
#define clr(x,y) memset(x,y,sizeof(x))
#define inf 1000000009
#define ll long long
#define maxn 100500
#define mm 2147483648
#define low(x) (x&(-x))
using namespace std;
struct data{int a,n,m,b,id;
}a[maxn];
struct node{int a;int b;
}f[maxn];
int tot,mx,T,b[maxn],pri[maxn],mu[maxn],ans[maxn];
int t[maxn];
int read(){
int x=,f=; char ch=getchar();
while (!isdigit(ch)){if (ch=='-') f=-; ch=getchar();}
while (isdigit(ch)){x=x*+ch-''; ch=getchar();}
return x*f;
}
bool cmpa(data a,data b){
return a.a<b.a;
}
bool cmp(node a,node b){
return a.a<b.a;
}
void pre(){
mu[]=;
rep(i,,mx){
if (!b[i]) b[i]=,pri[++tot]=i,mu[i]=-;
rep(j,,tot)if (i*pri[j]<=mx){
b[i*pri[j]]=;
if (i%pri[j]==) {mu[i*pri[j]]=; break;}
else mu[i*pri[j]]=-mu[i];
}
else break;
}
rep(i,,mx)
for (int j=i;j<=mx;j+=i) f[j].a+=i;
rep(i,,mx) f[i].b=i;
}
void add(int x,int y){
while (x<=mx){
t[x]+=y; x+=low(x);
}
}
int ask(int x){
int ans=;
while (x){
ans+=t[x];
x-=low(x);
}
return ans;
}
void solve(int id){
int n=a[id].n,m=a[id].m;
for (int i=,j;i<=n;i=j+){
j=min(n/(n/i),m/(m/i));
ans[a[id].id]+=(n/i)*(m/i)*(ask(j)-ask(i-));
}
}
int main(){
int q=read();
rep(i,,q){
a[i].n=read(); a[i].m=read(); a[i].a=read(); a[i].id=i;
if (a[i].n>a[i].m) swap(a[i].n,a[i].m);
mx=max(mx,a[i].n);
}
pre();
sort(a+,a++q,cmpa);
sort(f+,f++mx,cmp);
int now=;
rep(i,,q){
while (f[now].a<=a[i].a&&now<=mx){
for (int j=f[now].b;j<=mx;j+=f[now].b){
add(j,f[now].a*mu[j/f[now].b]);
}
now++;
}
solve(i);
}
rep(i,,q) printf("%d\n",ans[i]&0x7fffffff);
return ;
}

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

  1. [bzoj3529][Sdoi2014]数表_树状数组_莫比乌斯反演

    数表 bzoj-3529 Sdoi-2014 题目大意:n*m的数表,第i行第j列的数是同时整除i和j的所有自然数之和.给定a,求数表中所有不超过a的和. 注释:$1\le n,m \le 10^5$ ...

  2. BZOJ3529 [Sdoi2014]数表 【莫比乌斯反演】

    3529: [Sdoi2014]数表 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 2151 Solved: 1080 [Submit][Status ...

  3. bzoj千题计划205:bzoj3529: [Sdoi2014]数表

    http://www.lydsy.com/JudgeOnline/problem.php?id=3529 有一张n*m的数表,其第i行第j列(1 < =i < =n,1 < =j & ...

  4. BZOJ3529 [Sdoi2014]数表【莫比乌斯反演】

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

  5. 莫比乌斯反演套路二--(n/d)(m/d)给提出来--BZOJ3529: [Sdoi2014]数表

    一个数表上第i行第j列表示能同时整除i和j的自然数,Q<=2e4个询问,每次问表上1<=x<=n,1<=y<=m区域内所有<=a的数之和.n,m<=1e5,a ...

  6. BZOJ3529: [Sdoi2014]数表(莫比乌斯反演,离线)

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

  7. bzoj3529: [Sdoi2014]数表 莫比乌斯反演

    题意:求\(\sum_{i=1}^n\sum_{j=1}^nf(gcd(i,j))(gcd(i,j)<=a),f(x)是x的因子和函数\) 先考虑没有限制的情况,考虑枚举gcd为x,那么有\(\ ...

  8. BZOJ3529: [Sdoi2014]数表(莫比乌斯反演 树状数组)

    题意 题目链接 Sol 首先不考虑\(a\)的限制 我们要求的是 \[\sum_{i = 1}^n \sum_{j = 1}^m \sigma(gcd(i, j))\] 用常规的套路可以化到这个形式 ...

  9. 题解【bzoj3529 [SDOI2014]数表】

    Description \(T\) 组询问,定义 \(F(n)=\sum\limits_{d|n}d\).每次给出 \(n,m,a\) 求 \[\sum\limits_{i=1,j=1,F(\gcd( ...

随机推荐

  1. 个人的MySql配置总结

    lower_case_table_names参数是用来设置MySQL是否让Schema和数据表大小写敏感,我测试的是在查询界面和MySQL控制台界面无法改变它的值,要在配置文件中改变(先关闭服务),一 ...

  2. 支持各种特殊字符的 CSV 解析类 (.net 实现)(C#读写CSV文件)

    CSV是一种十分简洁的数据结构,在DOTNET平台实际使用中发现微软官方并没有提供默认的方法,而网上好多例子发现实现并不严谨甚至一些含有明显错误,所以后面自己实现了一个读写工具类,这里发出来希望方便后 ...

  3. jstree 学习

    最近的项目用到了jstree,因为对官方文档理解不充分,所以很多功能都是在网站上搜索再进行使用的.(我只是大自然的搬运工) 对每一级的节点,右键后出现不同的结果. 在jstree中右键是由 conte ...

  4. GAME——转圈游戏

    我们在生命的路上常常绝望 大概是因为弯路走了太多 脚上的泡被磨起又磨破 像我们所有的幻想与梦 起起落落. 所以说 我这道题考场上面和题解想得一模一样啊啊啊啊啊啊啊啊啊啊!!!!!! 但是就是打复杂了啊 ...

  5. bzoj 1150: [CTSC2007]数据备份Backup

    Description 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味 的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家 ...

  6. ECMAScript中的两种属性

    数据属性 数据属性包含一个数据值的位置.在这个位置可以读取和写入值.数据属性一般用于存储数据数值. 数据属性有4个描述其行为的特征. configurable:true/false,是否可以通过del ...

  7. Maven安装教程

    一.安装Maven及配置环境变量 1.Maven官网地址:http://maven.apache.org/download.cgi  下载apache-maven-3.5.0-bin.zip文件 2. ...

  8. [编织消息框架][JAVA核心技术]动态代理应用1

    前面几篇介绍,终于到了应用阶段啦,我们来做一个RPC来加强学过的知识 做基础核心时先确定解决什么问题,提供什么服务,同将来扩展等 rpc 分两部份,一个是调用者,另一方是服务提供者 调用者只关心那个服 ...

  9. vue2 过渡 轮播图

    ---恢复内容开始--- Vue主要渲染条件: v-if:是将元素删除再创造出来进行渲染. v-show:是将元素的display=none掉,再进行渲染: 要点知识:v-key:唯一元素标识,若不设 ...

  10. CentOS7下安装MySQL并配置远程连接

    一.CentOS7下安装MySQL数据库 CentOS7默认的安装包里面已经没有 MySQL-Server安装包了,远程镜像中也没有了. 默认的是MariaDB (MySQL的一个分支,开发这个分支的 ...