BZOJ3529: [Sdoi2014]数表 莫比乌斯反演_树状数组
2024-09-30 23:02:28
Code:
#include <cstdio>
#include <algorithm>
#include <cstring> #define ll long long
#define setIO(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout)
const long long mod = 2147483648;
const long long N = 100008;
const int maxn = 100009 ; using namespace std; struct M{
int delta;
int id;
}opt[maxn]; int prime[maxn],tot,vis[maxn],mu[maxn],g[maxn],answer[maxn];
int cmp2(M a,M b){ return a.delta < b.delta; }
void Init(){
mu[1] = 1;
for(int i=2;i < maxn; ++i) {
if(!vis[i]) prime[++tot] = i, mu[i] = -1;
for(int j=1;j <= tot && (ll)i * prime[j] <= N; ++j) {
vis[i * prime[j]] = 1;
if(i % prime[j]==0) {
mu[i * prime[j]] = 0;
break;
}
mu[i*prime[j]]=-mu[i];
}
}
for(int i=1;i<maxn;++i)
for(ll j=1;(ll)j*i<=N;++j) g[i*j] += i;
for(int i=1;i<maxn;++i) opt[i].delta=g[i],opt[i].id=i;
sort(opt+1,opt+maxn,cmp2);
}
struct BIT{
ll C[maxn];
int lowbit(int t) { return t & (-t); }
void update(int x,ll k) {
while(x < maxn) {
C[x]+=k, C[x]%=mod;
x+=lowbit(x);
}
}
ll query(int x){
ll sum=0;
while(x>0) sum+=C[x],sum%=mod,x-=lowbit(x);
return sum;
}
}tree;
ll work(int n,int m,int p) {
if(n>m) swap(n,m);
long long sum=0;
for(int i=1,j;i <= n;i=j+1) {
j=min(n/(n/i),m/(m/i));
sum+=(n/j)*(m/j)*(tree.query(j)-tree.query(i-1));
sum%=mod;
}
return sum;
}
struct P{ int n,m,a,id; }node[maxn];
int cmp(P a,P b){ return a.a<b.a; }
void oper(int p){ for(int i=1;i*opt[p].id<=N;++i) tree.update(opt[p].id*i,((ll)opt[p].delta*mu[i]+mod)%mod); }
int main(){
//setIO("input");
Init();
int T;
scanf("%d",&T);
for(int i=1;i<=T;++i) scanf("%d%d%d",&node[i].n,&node[i].m,&node[i].a),node[i].id=i;
sort(node+1,node+1+T,cmp);
int last=1;
for(int i=1;i<=T;++i) {
int j=last;
while(opt[j].delta <= node[i].a) oper(j),++j;
last=j;
answer[node[i].id]=(int)work(node[i].n,node[i].m,node[i].a);
}
for(int i=1;i<=T;++i) printf("%d\n",(answer[i]+mod)%mod);
return 0;
}
最新文章
- Enterprise Achitect使用与类的关系的简单介绍
- chrome 浏览器命令
- MTK6515 android打版软件配置(DrvGen.exe 使用)
- JVM学习笔记(二)------Java代码编译和执行的整个过程
- Css3 Media Queries移动页面的样式和图片的适配问题(转)
- Server Error The server encountered an error and could not complete your request. 新建站点模版失败
- Google设计理念
- SQL Server 中关于EXCEPT和INTERSECT的使用方法
- 硝烟中的Scrum和XP-我们如何实施Scrum 4 (Part 1/2)
- 【.Net】文件并发(日志处理)--队列--Redis+Log4Net
- ViewPager引导
- 【NET】Winform分页控件初探
- openstack中dashboard页面RuntimeError: Unable to create a new session key. It is likely that the cache is unavailable.
- Orcle导入导出dmp文件
- leetcode第一刷_Populating Next Right Pointers in Each Node II
- storm集群配置
- Qthread的使用方法
- InnerClass annotations are missing corresponding EnclosingMember annotations. Such InnerClas...
- Linux操作系统安装与VMTools的安装
- 使用yum时出现的404