hdu 4348 To the moon
题意:n个数 m次操作
操作分别为
C l r d: 把区间[l, r] 加 d
Q l r : 查询区间[l, r]的和
H l r t: 查询时间t的时候[l, r]的和
B t: 回到时间t
思路:主席树区间修改,区间求和
const int maxn = + ;
const int maxnode = * maxn; int n, m; struct Node
{
int l, r;
LL sum, add;
} tr[maxnode];
int tail;
LL a[maxn];
LL qL, qR, value;
LL sum; #define lson tr[o].l,L,M
#define rson tr[o].r,M+1,R
#define self o,L,R
#define lc tr[o].l
#define rc tr[o].r void build(int o, int L, int R)
{
if (L == R)
{
tr[o].sum = a[L];
return;
}
tr[o].l = ++tail;
tr[o].r = ++tail;
int M = L + (R - L) / ;
build(lson);
build(rson);
tr[o].sum = tr[lc].sum + tr[rc].sum;
} void maintain(int o, int L, int R)
{
if (L < R)
{
tr[o].sum = tr[lc].sum + tr[rc].sum;
}
else tr[o].sum = a[L];
tr[o].sum += tr[o].add * (R - L + );
} void update(int& o, int L, int R)
{
tr[++tail] = tr[o];
o = tail;
if (qL <= L && R <= qR)
{
tr[o].add += value;
}
else
{
int M = L + (R - L) / ;
if (qL <= M) update(lson);
if (qR > M) update(rson);
}
maintain(self);
} void query(int o, int L, int R, int add)
{
if (qL <= L && R <= qR)
{
sum += tr[o].sum + add * (R - L + );
return;
}
int M = L + (R - L) / ;
if (qL <= M) query(lson, add + tr[o].add);
if (qR > M) query(rson, add + tr[o].add);
} int root[maxn];//表示第i个线段树的root是什么,显然root[0]=0 void init()
{
memset(tr, , sizeof(tr));
tail = ;
for (int i = ; i <= n; i++)
{
scanf("%lld", &a[i]);
}
root[] = ;
build(, , n);
} void solve()
{
char op[];
int t;
int i = ;
while (m--)
{
op[] = ;
scanf("%s", op);
if (op[] == 'Q')
{
scanf("%lld%lld", &qL, &qR);
sum = ;
query(root[i], , n, );
printf("%lld\n", sum); }
else if (op[] == 'C')
{
i++;
root[i] = root[i-];
scanf("%lld%lld%lld", &qL, &qR, &value);
update(root[i], , n);
}
else if (op[] == 'H')
{
scanf("%lld%lld%d", &qL, &qR, &t);
sum = ;
query(root[t], , n, );
printf("%lld\n", sum);
}
else
{
scanf("%d", &t);
i = t;
}
}
} int main()
{
while (scanf("%d%d", &n, &m) == )
{
init();
solve();
}
return ;
}
hdu 4348 To the moon的更多相关文章
- HDU 4348.To the moon SPOJ - TTM To the moon -可持久化线段树(带修改在线区间更新(增减)、区间求和、查询历史版本、回退到历史版本、延时标记不下放(空间优化))
To the moon Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- hdu 4348 To the moon (主席树)
版权声明:本文为博主原创文章,未经博主允许不得转载. hdu 4348 题意: 一个长度为n的数组,4种操作 : (1)C l r d:区间[l,r]中的数都加1,同时当前的时间戳加1 . (2)Q ...
- hdu 4348 To the moon (主席树 区间更新)
链接: http://acm.hdu.edu.cn/showproblem.php?pid=4348 题意: 4种操作: C l r c 区间[l,r]加c,时间+1 Q l r 询问当前时 ...
- HDU 4348 To the moon 主席树 在线更新
http://acm.hdu.edu.cn/showproblem.php?pid=4348 以前做的主席树没有做过在线修改的题做一下(主席树这种东西正经用法难道不是在线修改吗),标记永久化比较方便. ...
- HDU 4348 To the moon 可持久化线段树
To the moon Problem Description BackgroundTo The Moon is a independent game released in November 201 ...
- HDU 4348 To the moon 可持久化线段树,有时间戳的区间更新,区间求和
To the moonTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.a ...
- hdu 4348 To the moon 主席树区间更新
To the moon Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Prob ...
- HDU 4348 To the moon(可持久化线段树)
To the moon Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Tota ...
- HDU 4348 To the moon(主席树 区间更新)题解
题意: 给一个数组A[1] ~ A[n],有4种操作: Q l r询问l r区间和 C l r v给l r区间每个数加v H l r t询问第t步操作的时候l r区间和 B t返回到第t步操作 思路: ...
随机推荐
- FormData、Blob、File、ArrayBuffer数据类型
XMLHttpRequest 1.0 1.0 中xmlhttpRequest有2个重要的返回属性,reposeText,reposeXml.下面的数据类型都是2.0新增的 FormData对象 我们应 ...
- centos设置服务开机启动
Linux CentOS设置服务开机启动的方法 by 天涯 · 2013/07/26 CentOS设置服务开机启动的两种方法 1.利用 chkconfig 来配置启动级别 在CentOS或者RedHa ...
- CentOS 7系统挂载NTFS分区的移动硬盘(转载及体验 CentOS6.5系统挂载NTFS分区的移动硬盘)
作为IT的工作者,避免不了使用Linux系统,我比较喜欢CentOS,为了锻炼自己对CentOS的熟练操作,就把自己的笔记本装了CentOS,强制自己使用,使自己在平时的工作中逐渐掌握Linux的学习 ...
- 学习mongo系列(二) 新建数据库,collection ,insert(),save()
一,新建数据库user:use user 二,查看当前使用的数据库:db 三,查看所有数据库:show dbs 四,删除当前正在使用的数据库:db.dropDatabase() 五,在当前数据库中插入 ...
- ~是什么意思 在C语言中,~0代表什么
是c语言中的位运算符:取反.0在内存中的存储方式是所有位为0,0000000000000000那么按位取反后位16个1(如果整形在你的机器上站16位),那么表示的数为-1.
- Java注释@Override
@Override指定方法覆载.它可以强制一个子类必须覆盖父类的方法. package ch14; /** * Created by Jiqing on 2016/12/27. */ public c ...
- 中国Linux源镜像站大全
原文链接:http://www.centoscn.com/yunwei/news/2012/1227/131.html 一.国内的linux源镜像站点: 1.企业源:阿里云开源镜像站: http:// ...
- nginx配置文件结构
nginx配置文件结构 全局参数 配置系统全局参数如:worker_processes 工作子进程数量.error_log 错误日志路径.pid 进程IDEvent一般是配置nginx工作模式及连 ...
- linux驱动初探之杂项设备(控制两个GPIO口)
关键字:linux驱动.杂项设备.GPIO 此驱动程序控制了外接的两个二极管,二极管是低电平有效. 上一篇博客中已经介绍了linux驱动程序的编写流程,这篇博客算是前一篇的提高篇,也是下一篇博客(JN ...
- 【linux】linux下yum安装后Apache、php、mysql默认安装路径
原文:http://blog.csdn.NET/u010175124/article/details/27322757apache:如果采用RPM包安装,安装路径应在 /etc/httpd目录下apa ...