题目链接:https://www.luogu.org/problemnew/show/P3368

题意:与模板1不同的是这题的操作是树状数组并不在行的区间更新和单点查找,如果按照模板1那样写肯定会T。但这题题目是树状数组模板,所以肯定还是能用树状数组来做的,我用a数组保存原数组,tr数组表示树状数组。

进行区间更新update时,只需要将组成这个区间的几个大管辖节点加这个数(类似于线段树中的懒操作)。

查询的时候,依层找自己的上级,然后加上自己上级的值就行了。因为在这里,上级的值就相当于懒操作的值。

具体可以找组数据模拟一下,就懂了,这样做的复杂度同树状数组一样,但tr数组已经不是定义上的树状数组了,我们只是借用了树状数组这一数据结构。

AC代码:

#include<cstdio>
#include<cctype>
using namespace std; inline int read(){
int x=,f=;char c=;
while(!isdigit(c)){f|=c=='-';c=getchar();}
while(isdigit(c)){x=(x<<)+(x<<)+(c^);c=getchar();}
return f?-x:x;
} int a[],tr[],n,m; int lowbit(int x){
return x&(-x);
} void update(int x,int k){
while(x>){
tr[x]+=k;
x-=lowbit(x);
}
} int query(int x){
int ans=;
while(x<=n){
ans+=tr[x];
x+=lowbit(x);
}
return ans;
} int main(){
n=read(),m=read();
for(int i=;i<=n;++i)
a[i]=read();
while(m--){
int op=read();
if(op==){
int x=read(),y=read(),k=read();
update(y,k);
update(x-,-k);
}
else{
int x=read();
printf("%d\n",a[x]+query(x));
}
}
return ;
}

luogu3368树状数组模板2的更多相关文章

  1. HDU 1166 敌兵布阵(线段树/树状数组模板题)

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  2. 树状数组模板(pascal) 洛谷P3374 【模板】树状数组1

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表示该数列数字的个数和操作的总个数. ...

  3. HDU 1166 线段树模板&树状数组模板

    HDU1166 上好的线段树模板&&树状数组模板 自己写的第一棵线段树&第一棵树状数组 莫名的兴奋 线段树: #include <cstdio> using nam ...

  4. 敌兵布阵 HDU - 1166 (树状数组模板题,线段树模板题)

    思路:就是树状数组的模板题,利用的就是单点更新和区间求和是树状数组的强项时间复杂度为m*log(n) 没想到自己以前把这道题当线段树的单点更新刷了. 树状数组: #include<iostrea ...

  5. 树状数组模板--Color the ball

    Color the ball HDU - 1556 N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电 ...

  6. 2016 Multi-University Training Contest 4 Bubble Sort(树状数组模板)

    Bubble Sort 题意: 给你一个1~n的排列,问冒泡排序过程中,数字i(1<=i<=n)所到达的最左位置与最右位置的差值的绝对值是多少 题解: 数字i多能到达的最左位置为min(s ...

  7. poj1195二维树状数组模板

    二维树状数组和一维的也差不多,改一下add和query函数即可:即按行修改,行内单点修改即可 /* 二维树状数组,询问一个二维区间内的数之和 */ #include<iostream> # ...

  8. 敌兵布阵---hud1166(线段树或者树状数组模板)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 线段树中对某一点的值进行改变: #include<iostream> #includ ...

  9. 线段树&树状数组模板

    树状数组: #include <bits/stdc++.h> using namespace std; ; struct binit { int a[MAXN], n; void modi ...

随机推荐

  1. plpgsql 函数定义

    --Function: dbo.fn_test(integer) --DROP FUNCTION dbo.fn_test(integer); CREATE OR REPLACE FUNCTION db ...

  2. Spring - 几种RPC模型的使用与比较

    Spring中,用JMS搞RPC时会用到: org.springframework.jms.remoting.JmsInvokerServiceExporter org.springframework ...

  3. ngnix优化【转】

    nginx的优化 1. gzip压缩优化 2. expires缓存有还 3. 网络IO事件模型优化 4. 隐藏软件名称和版本号 5. 防盗链优化 6. 禁止恶意域名解析 7. 禁止通过IP地址访问网站 ...

  4. BEM样式使用规范

    BEM 是 Block(块) Element(元素) Modifier(修饰器)的简称 使用BEM规范来命名CSS,组织HTML中选择器的结构,利于CSS代码的维护,使得代码结构更清晰(弊端主要是名字 ...

  5. Java生成验证码(二)

    前一篇博客已经介绍了如何用Java servlet产生验证码,本篇继续介绍如何使用一些开源组件生成验证码 ————————————————————————————————————————————   ...

  6. mysql-配置主从数据库,实现读写分离

    主从分离的原则:所有的写操作在主数据库中进行,因为主从分离的原理是涉及到同步数据,那就可能会出现延迟或者其他问题,就可能会出现脏数据. 所以,在从库中进行的读操作也必须是有一定容忍性的数据,例如日志等 ...

  7. 互联网轻量级框架SSM-查缺补漏第九天

    简言: 第九章 Spring Ioc的概念 IoC(Inversion of Control)控制反转:比如想喝橙汁,在没有饮品店的日子,最直观的做法是买果汁机.橙汁.这是你自己“主动”创造的过程,也 ...

  8. centos自带python2.6无法使用pip命令

    1.首先检查linux有没有安装python-pip包,直接执行 yum install python-pip,或者 which pip 我的已经安装了 2.没有可用软件包 python-pip.就执 ...

  9. BBS登录与注册功能

    登录功能 视图函数 def my_login(request): if request.method == 'GET': return render(request, 'login.html') el ...

  10. Google自写插件详解

    谷歌插件详解,跳转至个人主页查看. GoogleExtension