【模板】zkw线段树
题意简述
已知一个数列,你需要进行下面两种操作:
1.将某一个数加上x
2.求出某区间每一个数的和
代码
#include <cstdio>
using namespace std;
int n, m, N;
int a[1200001];
int main()
{
	scanf("%d%d", &n, &m);
	for (N = 1; N < n + 2; N <<= 1);
	for (register int i = 1; i <= n; ++i)
		scanf("%d", &a[i + N]);
	for (register int i = N; --i; )
		a[i] = a[i << 1] + a[i << 1 | 1];
	for (register int i = 1; i <= m; ++i)
	{
		int opt, x, y, ans = 0;
		scanf("%d%d%d", &opt, &x, &y);
		if (opt == 1) for (register int j = x + N; j; j >>= 1) a[j] += y;
		if (opt == 2)
		{
			for (register int j = x + N - 1, k = y + N + 1; j ^ k ^ 1; j >>= 1, k >>= 1)
			{
				if (~j & 1)	ans += a[j ^ 1];
				if ( k & 1)	ans += a[k ^ 1];
			}
			printf("%d\n", ans);
		}
	}
}
												
											【模板】zkw线段树的更多相关文章
- [模板] zkw线段树
		
zkw线段树 code1简单版本 code2差分版本(暂无) code1:(有注释) //By Menteur_Hxy #include<cstdio> #include<iostr ...
 - zkw线段树模板题
		
学了zkw线段树,觉得没什么必要刷专题的吧(切不动啊).. 那先放一个模板题吧(我绝不会和你说搬了一道树状数组模板题的!!!) 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某一个数加 ...
 - 题解 P3372 【【模板】线段树1 】(zkw)
		
看了一下题解里的zkw线段树,感觉讲的不是很清楚啊(可能有清楚的但是我没翻到,望大佬勿怪). 决定自己写一篇...希望大家能看明白... zkw线段树是一种优秀的非递归线段树,速度比普通线段树快两道三 ...
 - zkw线段树详解
		
转载自:http://blog.csdn.net/qq_18455665/article/details/50989113 前言 首先说说出处: 清华大学 张昆玮(zkw) - ppt <统计的 ...
 - [SinGuLaRiTy] ZKW线段树
		
[SinGuLaRiTy-1007] Copyrights (c) SinGuLaRiTy 2017. All Rights Reserved. 关于ZKW线段树 Zkw线段树是清华大学张昆玮发明非递 ...
 - 线段树(单标记+离散化+扫描线+双标记)+zkw线段树+权值线段树+主席树及一些例题
		
“队列进出图上的方向 线段树区间修改求出总量 可持久留下的迹象 我们 俯身欣赏” ----<膜你抄> 线段树很早就会写了,但一直没有总结,所以偶尔重写又会懵逼,所以还是要总结一下. ...
 - 『zkw线段树及其简单运用』
		
阅读本文前,请确保已经阅读并理解了如下两篇文章: 『线段树 Segment Tree』 『线段树简单运用』 引入 这是一种由\(THU-zkw\)大佬发明的数据结构,本质上是经典的线段树区间划分思想, ...
 - 有趣的   zkw  线段树(超全详解)
		
zkw segment-tree 真是太棒了(真的重口味)!写篇博客纪念入门 emmm...首先我们来介绍一下 zkw 线段树这个东西(俗称 "重口味" ,与 KMP 类似,咳咳. ...
 - ZKW线段树入门
		
Part 1 来说说它的构造 线段树的堆式储存 我们来转成二进制看看 小学生问题:找规律 规律是很显然的 一个节点的父节点是这个数左移1,这个位运算就是低位舍弃,所有数字左移一位 一个节点的子节点是这 ...
 - HDU 1166 - 敌兵布阵 - [单点修改、区间查询zkw线段树]
		
题还是那个题:http://www.cnblogs.com/dilthey/p/6827959.html 不过我们今天换一种线段树实现来做这道题: 关于zkw线段树的讲解:https://zhuanl ...
 
随机推荐
- c++学习书籍推荐《C++语言的设计与演化》下载
			
百度云及其他网盘下载地址:点我 编辑推荐 <C++语言的设计与演化>由C++语言的设计者Bjarne Stroustrup著就,是一本阐述C++语言的设计及开发过程的无可争辩的内情手册.S ...
 - Java内存模型以及线程安全的可见性问题
			
Java内存模型 VS JVM运行时数据区 首先Java内存模型(JMM)和JVM运行时数据区并不是一个东西,许多介绍Java内存模型的文章描述的堆,方法区,Java虚拟机栈,本地方法栈,程序计数器这 ...
 - python接口自动化(三十)--html测试报告通过邮件发出去——中(详解)
			
简介 上一篇,我们虽然已经将生成的最新的测试报告发出去了,但是MIMEText 只能发送正文,无法带附件,因此我还需要继续改造我们的代码,实现可以发送带有附件的邮件.发送带附件的需要导入另外一个模块 ...
 - android网络编程_socket(一)
			
转载http://www.eoeandroid.com/thread-97477-1-1.html 小知识点:UDP协议和TCP协议的不同.UDP是把数据都打成数据包,数据包上自带通信的地址,但是数据 ...
 - C++ 编程技巧锦集(一)
			
C++刷题精髓在STL编程,还有一些函数.下面我就总结一下本人在刷题过程中,每逢遇见总要百度的内容………………(大概率因为本人刷题太少了) 1. map map<string, int> ...
 - 跨站脚本攻击(selfxss)笔记(三)
			
本篇纯文字发表自己对自插型xss的看法 selfxss,顾名思义,自己输入xss脚本,输出仅自己看到,仅xss到自己. 常见的有:查询框的xss.某个账号中,添加自己的分组类等 查询框的xss: 即在 ...
 - golang开发:类库篇(四)配置文件解析器goconfig的使用
			
为什么要使用goconfig解析配置文件 目前各语言框架对配置文件书写基本都差不多,基本都是首先配置一些基础变量,基本变量里面有环境的配置,然后通过环境变量去获取该环境下的变量.例如,生产环境跟测试环 ...
 - Git储藏和引用日志
			
在日常工作中,当要经常停下手头的工作区修复临时的BUG,紧急处理来自同事或者经理的请求,但是又不能将手头的工作进行提交的时候.那么Git储藏功能(stash)就起到作用了. 储藏可以捕获我们的工作区状 ...
 - git commit规范化实践
			
最近从svn转到git进行代码版本控制,今天了解了git commit规范化的一些知识后,写此文章记录下配置过程. 环境 编辑器使用的是vscode,项目框架是vue3.0 规范化工具 规范化git ...
 - python的乘法口诀表
			
python的乘法口诀表 python的乘法口诀表 用python来写一个脚本,使得这个脚本在运行后自动输出乘法口诀表. pyton的脚本如下: #!/usr/bin/env python #codi ...