题解:

因为卡空间,所以直接到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. Python3基础 json.loads 解析json格式的数据,得到一个字典

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  2. Django组件(三) Django之中间件

    中间件概述 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎实用,用不好会影响到性 ...

  3. CSS布局总结及实际应用中产生的问题

    布局初步 所谓布局,其实是指的将网页内容以一定的方式放到合适的位置上去. 布局的基本步骤: 1, 将“当前版面”以视觉上界限明显的方式进行划分若干个区块,划分只用两种方式: a) 上下结构:此时,只要 ...

  4. linux交叉编译gcc4.8.3

    1.环境: Ubuntu 16.04 2.获取 wget mirrors.ustc.edu.cn/gnu/gcc/gcc-4.8.3/gcc-4.8.3.tar.bz2 3.解压 tar xvf gc ...

  5. Wireshark分析RabbitMQ

    消费者Code: using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  6. RHEL7--linux系统启动流程与故障排除

    一.Linux启动过程 MBR保存着系统的主引导程序(grub 446字节,分区表64字节),启动过程就是把内核加载到内存. 启动的顺序: 1.BIOS: 2.BIOS激活MBR: 3.MBR中的引导 ...

  7. System.ConfigurationManager类用于对配置文件的读取

    http://blog.csdn.net/ligenyingsr/article/details/54095986 System.ConfigurationManager类用于对配置文件的读取.其具有 ...

  8. Android Studio下载新的AVD映像把C盘给占满了

    不管你的Android SDK/Studio安装哪儿, 默认总是下载到 C:\Users\Administrator\.android ... 可以设置ANDROID_SDK_HOME 指定到新的目录 ...

  9. 用python + hadoop streaming 编写分布式程序(三) -- 自定义功能

    又是期末又是实训TA的事耽搁了好久……先把写好的放上博客吧 相关随笔: Hadoop-1.0.4集群搭建笔记 用python + hadoop streaming 编写分布式程序(一) -- 原理介绍 ...

  10. MVC ---- T4(1)

    T4 模板编辑插件:tangibleT4EditorPlusModellingToolsVS2012.msi 下载地址:http://t4-editor.tangible-engineering.co ...