题解:

因为卡空间,所以直接到spoj上面去做了

区间修改的线段树

但是加lazy会把之前的操作修改

正确的解法是lazy不下传,只是在当前计算

但是听说可以记录时间的下传,我弱弱不会

代码:

#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=;
typedef long long ll;
struct aa
{
int lc,rc,l,r;
ll add,sum;
int len(){return r-l+;}
}a[N*];
int n,m,rt[N],time,tot,Time[N];
void build(int &u,int l,int r)
{
u=++tot;
a[u].l=l,a[u].r=r;
if (l==r) {scanf("%lld",&a[u].sum);return;}
int mid=(l+r)>>;
build(a[u].lc,l,mid);
build(a[u].rc,mid+,r);
a[u].sum=a[a[u].lc].sum+a[a[u].rc].sum;
}
void insert(int &now,int old,int l,int r,ll d)
{
now=++tot;
a[now]=a[old];
if (a[old].l==l&&a[old].r==r)
{
a[now].add+=d;
return;
}
a[now].sum+=d*(r-l+);
int mid=(a[now].l+a[now].r)>>;
if (r<=mid) insert(a[now].lc,a[old].lc,l,r,d);
else if (mid<l) insert(a[now].rc,a[old].rc,l,r,d);
else
{
insert(a[now].lc,a[old].lc,l,mid,d);
insert(a[now].rc,a[old].rc,mid+,r,d);
}
}
ll query(int u,int l,int r)
{
ll tmp=a[u].add*(r-l+);
if (a[u].l==l&&a[u].r==r) return a[u].sum+tmp;
int mid=(a[u].l+a[u].r)>>;
if (r<=mid) return tmp+query(a[u].lc,l,r);
else if (mid<l) return tmp+query(a[u].rc,l,r);
return tmp+query(a[u].lc,l,mid)+query(a[u].rc,mid+,r);
}
int main()
{
scanf("%d%d",&n,&m);
build(rt[],,n);
time=;
char ch[];
int x,y,t;ll d;
for (int i=;i<=m;i++)
{
scanf("%s",ch);
if (ch[]=='C')
{
scanf("%d%d%lld",&x,&y,&d);
time++;
insert(rt[time],rt[time-],x,y,d);
Time[time]=tot;
}
if (ch[]=='Q')
{
scanf("%d%d",&x,&y);
printf("%lld\n",query(rt[time],x,y));
}
if (ch[]=='H')
{
scanf("%d%d%d",&x,&y,&t);
printf("%lld\n",query(rt[t],x,y));
}
if (ch[]=='B')
{
scanf("%d",&time);
tot=Time[time];
}
}
return ;
}

hdu4348的更多相关文章

  1. [HDU4348]To the moon(主席树+标记永久化)

    学可持久化treap的时候才发现自己竟然没写过需要标记下传的主席树,然而现在发现大部分操作都可以标记永久化,下传会增大占用空间. 这题一种写法是和普通的线段树一样标记下传,注意所有修改操作(包括put ...

  2. HDU4348 To the moon

    Time Limit: 2000MS   Memory Limit: 65536KB   64bit IO Format: %I64d & %I64u Description Backgrou ...

  3. 【主席树】【bzoj2161】[hdu4348]

    #include<cstdio> #include<algorithm> #include<cstring> #define N 400000 using name ...

  4. hdu4348 - To the moon 可持久化线段树 区间修改 离线处理

    法一:暴力! 让干什么就干什么,那么久需要可持久化线段树了. 但是空间好紧.怎么破? 不down标记好了! 每个点维护sum和add两个信息,sum是这段真实的和,add是这段整体加了多少,如果这段区 ...

  5. 【HDU4348】【主席树】To the moon

    Problem Description BackgroundTo The Moon is a independent game released in November 2011, it is a r ...

  6. 可持久化线段树——区间更新hdu4348

    和线段树类似,每个结点也要打lazy标记 但是lazy标记和线段树不一样 具体区别在于可持久化后lazy-tag不用往下传递,而是固定在这个区间并不断累加,变成了这个区间固有的性质(有点像分块的标记了 ...

  7. hdu4348区间更新的主席树+标记永久化

    http://acm.hdu.edu.cn/showproblem.php?pid=4348 sb的标记永久化即可,刚开始add和sum没复制过来wa了两发...,操作和原来的都一样,出来单点变成区间 ...

  8. HDU4348:To the moon

    浅谈主席树:https://www.cnblogs.com/AKMer/p/9956734.html 浅谈标记永久化:https://www.cnblogs.com/AKMer/p/10137227. ...

  9. [HDU4348]To the moon(主席树)

    传送门 对于这个题,显然要打lazy标记了,但是lazy标记pushdown的时候肯定会增加一大堆节点,然后就MLE了.(题解这么说的,我其实不会pushdown) 所以,就换另一种方式,把标记直接打 ...

随机推荐

  1. Win32 消息响应顺序

    如果窗口处理函数响应了 WM_RBUTTONUP后,不会响应WM_CONTEXTMENU消息了.

  2. Notepad++7.5.4 设置主题,使用插件

    首先官网下载 Notepad++7.5.4 默认英文转换成中文 下面设置主题: 设置-->语言格式设置 选择主题Obsidian,字体选择等宽字体Consolas,大小为11,选择全局字体,使用 ...

  3. JavaScript:Array属性方法

    ,,,,]; console.dir(arr); var pro=Object.getPrototypeOf(arr); console.dir(pro); 来一个个的查看数组的属性,方法 1.Arr ...

  4. Java自学入门新的体会0.2

    Java 基本数据类型 变量就是申请内存来存储值,也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来存储该类型数据. 因此,通过定义不 ...

  5. java web项目去除项目名称访问设置方法及tomcat的<Host>标签讲解

    本文为博主原创,未经允许不得转载. 在集群项目中,为了方便用户可以更快捷的访问,即只需要输入IP和端口号,就可以直接访问项目,因为 模块比较多,记住项目名称并不容易,所以在网上查看和学习了下设置的方法 ...

  6. The way to Go(2): 语言的主要特性与发展的环境和影响因素

    Reference: Github: Go Github: The way to Go 语言的主要特性与发展的环境和影响因素 现有编程语言对于Go语言发展的影响: Why Go? C/C++ 的发展速 ...

  7. SublimeText3常用快捷键和优秀插件(亲测)

    SublimeText3常用快捷键和优秀插件 SublimeText是前端的一个神器,以其精简和可DIY而让广大fans疯狂.好吧不吹了直入正题 -_-!! 首先是安装,如果你有什么软件管家的话搜一下 ...

  8. UVa 437 巴比伦塔

    https://vjudge.net/problem/UVA-437 这道题和HDU的Monkey and Banana完全一样. #include<iostream> #include& ...

  9. 初探 Yii2 的测试模式 index-test.php

    有没有发现高级版每个应用的 web 目录下有两个入口文件,一个index.php 一个 index-test.php通过init.bat可以切换到调试模式和产品模式,这两个模式相信同学们都很熟悉了,那 ...

  10. LR学习资料

    http://ajita.iteye.com/blog/1728243/ 选择哪种方式录制,有以下参考原则: 1 基于浏览器的应用程序推荐使用HTML-based Script 2 不是基于浏览器的应 ...