博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj千题计划205:bzoj3529: [Sdoi2014]数表
阅读量:5227 次
发布时间:2019-06-14

本文共 1925 字,大约阅读时间需要 6 分钟。

 

有一张n*m的数表,其第i行第j列(1 < =i < =n,1 < =j < =m)的数值为能同时整除i和j的所有自然数之和。给定a,计算数表中不大于a的数之和。

20000 组询问  n<=1e5

 

f(k)表示 k 的 约数和

g(k)表示 

f(k)的求法:

g(k)的求法:

 

假设没有a的限制

不妨令n<=m

 令i*d=t,把后面两个下取整提到前面

预处理出F(t),除法分块便可以在O(sqrt(n))求解

但是现在有f(i)<=a 的限制

离线处理,读入所有的询问

所以把f(i)按f(i)的值从小到大排序

询问按a的值从小到大排序

用树状数组维护当前F(t)的值

在处理这个询问之前

找出所有<=本次询问a的f(i)

在树状数组中i及i的倍数位置加上f(i)

 

取模不用管,自然溢出即可 

 

#include
#include
#include
using namespace std;#define N 100001#define M 20001typedef long long LL;int T;int miu[N];int p[N];bool vis[N];struct nodef{ int d,val;}f[N];int c[N];bool cmpf(nodef A,nodef B){ if(A.val!=B.val) return A.val
=N) break; vis[i*p[j]]=true; if(i%p[j]==0) { f[i*p[j]].val=f[i].val*p[j]+c[i]; c[i*p[j]]=c[i]; break; } miu[i*p[j]]=-miu[i]; f[i*p[j]].val=f[i].val*(p[j]+1); c[i*p[j]]=f[i].val; } } sort(f+1,f+N,cmpf);}void init(){ read(T); for(int i=1;i<=T;++i) { read(Q[i].n); read(Q[i].m); read(Q[i].a); Q[i].id=i; } sort(Q+1,Q+T+1,cmpQ);}void solve(){ int nowQ=1; while(Q[nowQ].a<=0) nowQ++; int nowd=1; int j,res; int tot,lastsum,nowsum; for(;nowQ<=T;++nowQ) { while(nowd
Q[nowQ].m) swap(Q[nowQ].n,Q[nowQ].m); tot=lastsum=0; for(int i=1;i<=Q[nowQ].n;i=j+1) { j=min(Q[nowQ].n/(Q[nowQ].n/i),Q[nowQ].m/(Q[nowQ].m/i)); nowsum=Bit.query(j); res=nowsum-lastsum; res=res*(Q[nowQ].n/i)*(Q[nowQ].m/i); tot+=res; lastsum=nowsum; } tot+= tot<0 ? 1LL<<31 : 0; ans[Q[nowQ].id]=tot; } for(int i=1;i<=T;++i) cout<
<<'\n';}int main(){ pref(); init(); solve();}

 

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/8241930.html

你可能感兴趣的文章
MPT树详解
查看>>
空间分析开源库GEOS
查看>>
RQNOJ八月赛
查看>>
前端各种mate积累
查看>>
jQuery 1.7 发布了
查看>>
Python(软件目录结构规范)
查看>>
Windows多线程入门のCreateThread与_beginthreadex本质区别(转)
查看>>
Nginx配置文件(nginx.conf)配置详解1
查看>>
linux php编译安装
查看>>
name phone email正则表达式
查看>>
721. Accounts Merge
查看>>
OpenCv-Python 图像处理基本操作
查看>>
「Unity」委托 将方法作为参数传递
查看>>
重置GNOME-TERMINAL
查看>>
redis哨兵集群、docker入门
查看>>
正则表达式2
查看>>
Unity3D_(插件)小地图自刷新制作Minimap小地图
查看>>
为什么分布式一定要有Redis?
查看>>
hihoCoder 1233 : Boxes(盒子)
查看>>
团队的绩效评估计划
查看>>