因为题中的操作是区间加法,所以满足前缀相减性.

而每一次查询的时候还是单点查询,所以直接用可持久化线段树维护差分数组,然后查一个前缀和就行了.

code:

#include <bits/stdc++.h>
#define N 200004
#define LL long long
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
int n,m,q,tot,rt[N];
LL val[N];
int newnode() { return ++tot; }
struct node { int ls,rs; LL sum;}t[N*50];
void build(int &now,int l,int r)
{
now=newnode();
if(l==r) return ;
int mid=(l+r)>>1;
if(l<=mid) build(t[now].ls,l,mid);
if(r>mid) build(t[now].rs,mid+1,r); }
int update(int p,int l,int r,int pos,int v)
{
int now=newnode();
t[now]=t[p];
t[now].sum=t[p].sum+1ll*v;
if(l==r) return now;
int mid=(l+r)>>1;
if(pos<=mid) t[now].ls=update(t[p].ls,l,mid,pos,v);
else t[now].rs=update(t[p].rs,mid+1,r,pos,v);
return now;
}
LL query(int now,int l,int r,int L,int R)
{
if(!now) return 0;
if(l>=L&&r<=R) return t[now].sum;
int mid=(l+r)>>1;
LL re=0ll;
if(L<=mid) re+=query(t[now].ls,l,mid,L,R);
if(R>mid) re+=query(t[now].rs,mid+1,r,L,R);
return re;
}
int main()
{
// setIO("input");
int i,j;
scanf("%d%d%d",&n,&m,&q);
for(i=1;i<=n;++i) scanf("%lld",&val[i]);
build(rt[0],1,n);
for(i=1;i<=m;++i)
{
int l,r,h;
scanf("%d%d%d",&l,&r,&h);
rt[i]=update(rt[i-1],1,n,l,h);
if(r<n) rt[i]=update(rt[i],1,n,r+1,-h);
}
for(i=1;i<=q;++i)
{
int opt;
scanf("%d",&opt);
if(opt==1)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
LL L=query(rt[x-1],1,n,1,z);
LL R=query(rt[y],1,n,1,z);
printf("%lld\n",R-L+val[z]);
}
else
{
int pos,p;
scanf("%d%d",&pos,&p);
val[pos]=1ll*p;
}
}
return 0;
}

  

luogu T96516 [DBOI2019]持盾 可持久化线段树+查分的更多相关文章

  1. luogu P3919 [模板]可持久化数组(可持久化线段树/平衡树)(主席树)

    luogu P3919 [模板]可持久化数组(可持久化线段树/平衡树) 题目 #include<iostream> #include<cstdlib> #include< ...

  2. Luogu P3919 【模板】可持久化数组 可持久化线段树

    其实就是可持久化线段树的模板题线段树不会看这里 #include<bits/stdc++.h> ; using namespace std; ]; ],rc[N*],val[N*],cnt ...

  3. 主席树||可持久化线段树+离散化 || 莫队+分块 ||BZOJ 3585: mex || Luogu P4137 Rmq Problem / mex

    题面:Rmq Problem / mex 题解: 先离散化,然后插一堆空白,大体就是如果(对于以a.data<b.data排序后的A)A[i-1].data+1!=A[i].data,则插一个空 ...

  4. Luogu P3919【模板】可持久化数组(可持久化线段树/平衡树)

    题面:[模板]可持久化数组(可持久化线段树/平衡树) 不知道说啥,总之我挺喜欢自己打的板子的! #include<cstdio> #include<cstring> #incl ...

  5. 【Luogu P3834】可持久化数组(可持久化线段树)

    题目链接 可持久化线段树模板题. 这里总结一下可持久化线段树. 可持久化数据结构就是能恢复历史状态的数据结构,比如可持久化\(Trie\),并查集,平衡树. 可持久化数组是最基础的,这里通过可持久化线 ...

  6. 洛谷P3834 [模板]可持久化线段树1(主席树) [主席树]

    题目传送门 可持久化线段树1(主席树) 题目背景 这是个非常经典的主席树入门题——静态区间第K小 数据已经过加强,请使用主席树.同时请注意常数优化 题目描述 如题,给定N个正整数构成的序列,将对于指定 ...

  7. 【洛谷P3834】(模板)可持久化线段树 1(主席树)

    [模板]可持久化线段树 1(主席树) https://www.luogu.org/problemnew/show/P3834 主席树支持历史查询,空间复杂度为O(nlogn),需要动态开点 本题用一个 ...

  8. 【可持久化线段树?!】rope史上最全详解

    https://www.luogu.org/problemnew/show/P3919 看到上面链接中的题时,我在学会可持久化线段树的同时,第一次学会了一个非常屌(cai)的STL大法——rope!! ...

  9. 区间第K小——可持久化线段树模板

    概念 可持久化线段树又叫主席树,之所以叫主席树是因为这东西是fotile主席创建出来的. 可持久化数据结构思想,就是保留整个操作的历史,即,对一个线段树进行操作之后,保留访问操作前的线段树的能力. 最 ...

随机推荐

  1. 深入浅出CAS

    后端开发中大家肯定遇到过实现一个线程安全的计数器这种需求,根据经验你应该知道我们要在多线程中实现 共享变量 的原子性和可见性问题,于是锁成为一个不可避免的话题,今天我们讨论的是与之对应的无锁 CAS. ...

  2. 递归在JavaScript中的应用实例

    递归 适用的必要条件:①过程的描述中包含它自身②有明确的结束递归的条件. 主要思路:在每一次调用自己时,使用相同的解决问题的方法,但调用的参数每次不同(有规律的变化),使用一个终止处理(结束递归)的条 ...

  3. 全栈项目|小书架|微信小程序-项目结构设计分包

    前面的文章 介绍了服务端的基础搭建以及用户模块的设计,接下来就是在服务端和客户端实现具体的业务了. 本篇文章先来介绍微信小程序开发的项目结构设计,也就是项目分包情况. 由于项目是在<极客时间-9 ...

  4. CachedThreadPool

    /** * <html> * <body> * <P> Copyright 1994 JsonInternational</p> * <p> ...

  5. Java File类与IO流

    File 类 java.io.File 文件和目录路径名的抽象表示形式, 对文件或目录进行操作 构造方法: File(File parent, String child) : 根据 parent 抽象 ...

  6. 【转载】Javascript使用Math.random()随机数函数生成1至1000的随机数

    在Javascript代码编写过程中,有时候我们需要使用Js来生成随机数,清除ajax的get请求缓存的时候我们会带上一个随机数来解决此问题,此外在其他应用中也可能使用到随机数,在Javascript ...

  7. js 算法,数组排序

    冒泡排序.给数组按数字从小到大依次排序 arr = [1, 6, 7, 8, 9, 5, 18]; //最外层指针i从左到右依次循环指向,当最内层的指针循环一圈后,指针i才指向下个位置 //最内层指针 ...

  8. 【大数据技术能力提升_4】logistic学习

    logistic学习 标签(空格分隔): logistic sigmod函数 逻辑回归 分类 前言:   整体逻辑回归比线性回归难理解点,其还需要<概率论与数理统计>中"二项分布 ...

  9. CPNtools 模拟工具适合分析什么样的协议

    最近梳理和CPNtools和Scyther之间的性能和差别.方便后面整理使用 1.库所的托肯值是什么? 托肯值也叫作令牌, 即网络系统中的资源,托肯的数目值代表了网络赋予的资源大小.在一个活的网络系统 ...

  10. MySQL JOIN原理(转)

    先看一下实验的两张表: 表comments,总行数28856 表comments_for,总行数57,comments_id是有索引的,ID列为主键. 以上两张表是我们测试的基础,然后看一下索引,co ...