题解:

因为卡空间,所以直接到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. Spring通过ApplicationContext主动获取bean

    有些场景无法通过AutoWired和compoment注解传递进来,于是希望通过Spring context主动去获取beandemo: package com.qhong.Util; import ...

  2. JavaScript 开闭原则OCP

    代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...

  3. poj 2449 Remmarguts' Date 求第k短路 Astar算法

    =.=好菜 #include <iostream> #include <cstdio> #include <string.h> #include <cstri ...

  4. 浅谈java中死锁问题

    知识点:死锁的产生.死锁的实例 一:死锁的产生 我们在解决多线程共享资源的线程同步问题时,会使用synchronized关键字修饰方法或者通过Lock加锁方式修饰方法.代码块,防止多个线程访问统一资源 ...

  5. 【eclipse】阿里巴巴代码检测插件在线安装

    https://p3c.alibaba.com/plugin/eclipse/update

  6. BFS-迷宫问题-用宽度(广度)优先搜索解决最优路径问题

    题目: 给定一个大小为 N×M 的迷宫.迷宫由通道和墙壁组成,每一步可以向邻接的上下左右四格 的通道移动.请求出从起点到终点所需的最小步数.请注意,本题假定从起点一定可以移动 到终点. 限制条件;N, ...

  7. UVa 116 单向TSP(多段图最短路)

    https://cn.vjudge.net/problem/UVA-116 题意:给出m行n列的整数矩阵,从第一列任何一个位置出发每次往右,右上或右下走一格,最终到达最后一列,要求经过的整数之和最小. ...

  8. json 保存

    with open(mpath,"w") as k: dlist=[] for key in yaml_dict["data"]: dlist.append(y ...

  9. windows与kali双系统安装基本教程

    以前写过一篇在虚拟机中安装kali的基本教程的文章,那时候的kali还是1.0时代,现如今已经kali2.0了,在虚拟机中运行kali还是会受到性能的影响,所以还是装到自己电脑上跑起来最爽.当然如果你 ...

  10. Pyhon 日志管理 -- logging

    Pyhon 日志管理 -- logging 一直觉得运行程序是能打印日志是一个神奇的事情,不懂日志产生的原理,后来听说Pyhton 有一个logging模块,So,要好好研究一下. 先贴出代码,看看她 ...