2015 Multi-University Training Contest 8 hdu 5381 The sum of gcd
The sum of gcd
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 641 Accepted Submission(s): 277
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = ;
struct node {
LL sum;
int Lg[],Rg[],Ln[],Rn[],Lc,Rc;
} tree[maxn<<];
node pushup(const node &a,const node &b) {
node ret;
ret.sum = a.sum + b.sum;
for(int i = ; i < a.Rc; ++i)
for(int j = ; j < b.Lc; ++j)
ret.sum += __gcd(a.Rg[i],b.Lg[j])*1LL*a.Rn[i]*b.Ln[j];
for(int i = ; i < b.Rc; ++i) {
ret.Rg[i] = b.Rg[i];
ret.Rn[i] = b.Rn[i];
}
for(int i = ; i < a.Lc; ++i) {
ret.Lg[i] = a.Lg[i];
ret.Ln[i] = a.Ln[i];
}
int d = b.Rg[b.Rc-],p = b.Rc;
for(int i = ; i < a.Rc; ++i) {
int tmp = __gcd(a.Rg[i],d);
if(tmp == ret.Rg[p-]) ret.Rn[p-] += a.Rn[i];
else {
ret.Rg[p] = tmp;
ret.Rn[p++] = a.Rn[i];
}
}
ret.Rc = p;
d = a.Lg[a.Lc-],p = a.Lc;
for(int i = ; i < b.Lc; ++i) {
int tmp = __gcd(d,b.Lg[i]);
if(tmp == ret.Lg[p-]) ret.Ln[p-] += b.Ln[i];
else {
ret.Ln[p] = b.Ln[i];
ret.Lg[p++] = tmp;
}
}
ret.Lc = p;
return ret;
}
void build(int L,int R,int v) {
if(L == R) {
tree[v].Lc = tree[v].Rc = ;
tree[v].Ln[] = tree[v].Rn[] = ;
scanf("%d",&tree[v].Lg[]);
tree[v].sum = tree[v].Rg[] = tree[v].Lg[];
return;
}
int mid = (L + R)>>;
build(L,mid,v<<);
build(mid+,R,v<<|);
tree[v] = pushup(tree[v<<],tree[v<<|]);
}
void query(int L,int R,int lt,int rt,int v) {
if(lt <= L && rt >= R) {
if(lt == L) tree[] = tree[v];
else tree[] = pushup(tree[],tree[v]);
return;
}
int mid = (L + R)>>;
if(lt <= mid) query(L,mid,lt,rt,v<<);
if(rt > mid) query(mid+,R,lt,rt,v<<|);
}
int main() {
int kase,n,m,x,y;
scanf("%d",&kase);
while(kase--) {
scanf("%d",&n);
build(,n,);
scanf("%d",&m);
while(m--) {
scanf("%d%d",&x,&y);
query(,n,x,y,);
printf("%I64d\n",tree[].sum);
}
}
return ;
}
2015 Multi-University Training Contest 8 hdu 5381 The sum of gcd的更多相关文章
- hdu 5381 The sum of gcd(线段树+gcd)
题目链接:hdu 5381 The sum of gcd 将查询离线处理,依照r排序,然后从左向右处理每一个A[i],碰到查询时处理.用线段树维护.每一个节点表示从[l,i]中以l为起始的区间gcd总 ...
- hdu 5381 The sum of gcd 2015多校联合训练赛#8莫队算法
The sum of gcd Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) T ...
- hdu 5381 The sum of gcd 莫队+预处理
The sum of gcd Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) P ...
- hdu 5381 The sum of gcd
知道对于一个数列,如果以x为左(右)端点,往右走,则最多会有log(a[x])个不同的gcd,并且有递减性 所以会分成log段,每一段的gcd相同 那我们可以预处理出对于每一个位置,以这个位置为左端点 ...
- HDU 5381 The sum of gcd (技巧,莫队算法)
题意:有一个含n个元素的序列,接下来有q个询问区间,对每个询问区间输出其 f(L,R) 值. 思路: 天真单纯地以为是道超级水题,不管多少个询问,计算量顶多就是O(n2) ,就是暴力穷举每个区间,再直 ...
- 2015 Multi-University Training Contest 8 hdu 5390 tree
tree Time Limit: 8000ms Memory Limit: 262144KB This problem will be judged on HDU. Original ID: 5390 ...
- 2015 Multi-University Training Contest 8 hdu 5383 Yu-Gi-Oh!
Yu-Gi-Oh! Time Limit: 2000ms Memory Limit: 65536KB This problem will be judged on HDU. Original ID: ...
- 2015 Multi-University Training Contest 8 hdu 5385 The path
The path Time Limit: 2000ms Memory Limit: 65536KB This problem will be judged on HDU. Original ID: 5 ...
- 2015 Multi-University Training Contest 3 hdu 5324 Boring Class
Boring Class Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
随机推荐
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第12章节--SP 2013中远程Event Receivers 总结
BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第12章节--SP 2013中远程Event Receivers 总结 本章节向你介绍了SP平台上eve ...
- Hadoop作业性能指标及參数调优实例 (三)Hadoop作业性能參数调优方法
作者: Shu, Alison Hadoop作业性能调优的两种场景: 一.用户观察到作业性能差,主动寻求帮助. (一)eBayEagle作业性能分析器 1. Hadoop作业性能异常指标 2. Had ...
- [NOIP 2017] 奶酪
[题目链接] http://uoj.ac/problem/332 [算法] 直接搜索即可 注意使用long long [代码] #include<bits/stdc++.h> using ...
- 2017-3-13 leetcode 4 11 15
ji那天居然早起了,惊呆我了,眼睛有点儿疼,一直流泪....继续保持 ========================================================== leetco ...
- raspberry-同路由器用putty和vnc桌面登录方法
一个raspberry B,家里电脑是win10系统. 最初是用HDMI连家里电视机的显示屏来当桌面的,没有配置就好用,但第二次再开机发现怎么弄都显示无信号,排除SD卡不活动.HDMI接口被烧坏等可能 ...
- 前端之HEML
HTML介绍 Web服务本质 import socket sk = socket.socket() sk.bind(("127.0.0.1", 8080)) sk.listen ...
- ROS-launch文件标签解读
前言:ROS提供了一个同时启动节点管理器(master)和多个节点的途径,即使用启动文件(launch file).事实上,在ROS功能包中,启动文件的使用是非常普遍的.任何包含两个或两个以上节点的系 ...
- TexturePacker贴图打包工具
1.该软件是收费的,不过对于这么一款实用的工具来说,物有所值,下载地址 http://www.codeandweb.com/texturepacker 2.openGL载入纹理图片的时候,所用内存是会 ...
- 9.18[XJOI] NOIP训练36
***在休息了周末两天(好吧其实只有半天),又一次投入了学车的怀抱,重新窝在这个熟悉的机房 今日9.18(今天以后决定不写打卡了) 日常一日总结 一个昏昏欲睡的早晨 打了一套不知道是谁出的题目,空间限 ...
- 树莓派-基于aria2实现离线下载
安装aria2 aria2是linux下的一个下载工具,它支持http.bt种子.磁力链接三种方式下载 sudo apt-get install aria2 配置aria2 aria2支持命令参数,也 ...