STL做法 平衡树

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
#define M (250000)
#define maxn (1000000+5)
int N,n,m;
int st[4*maxn];
void change(int x,int v){
	x+=M;
	for(st[x]+=v;x>1;x>>=1){
		st[x>>1]=st[x]+st[x^1];
	}
}
int ask(int L,int R)
{
	int ans=0;
	for(L+=M-1,R+=M+1;L!=(R^1);L>>=1,R>>=1)
	{
		if(~L&1)ans+=st[L^1];
		if( R&1)ans+=st[R^1];
	}
	return ans;
}
int main()
{
	scanf("%d",&N);
	for(int i=1;i<=N;i++)
	{
		int temp;
		scanf("%d",&temp);
		change(i,temp);
	}
	scanf("%d",&m);
	for(int i=1;i<=m;i++)
	{
		int x,a,b;
		scanf("%d%d%d",&x,&a,&b);
		if(x==1)
		{
			change(a,b);
		}
		else printf("%d\n",ask(a,b));
	}
	return 0;
}
时间: 2024-12-07 23:19:19

STL做法 平衡树的相关文章

双向队列(STL做法)

双向队列 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 想想双向链表--双向队列的定义差不多,也就是说一个队列的队尾同时也是队首:两头都可以做出队,入队的操作. 现在给你一系列的操作,请输出最后队列的状态: 命令格式: LIN X  X表示一个整数,命令代表左边进队操作: RIN X  表示右边进队操作: ROUT LOUT   表示出队操作: 输入 第一行包含一个整数M(M<=10000),表示有M个操作: 以下M行每行包

STL or Force --- CSU 1553: Good subsequence

Good subsequence Problem's Link:   http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1553 Mean: 给你一个长度为n的序列和一个值k,让你找出一个子序列,满足在这个子序列中max-min的值<=k,求这个子序列最长的长度. analyse: 这题做法很多,直接暴力枚举每一个数为起点. Time complexity: O(n) Source code:  方法一(暴力): // Memory Time //

hdu---(1800)Flying to the Mars(trie树)

Flying to the Mars Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 11228    Accepted Submission(s): 3619 Problem Description In the year 8888, the Earth is ruled by the PPF Empire . As the popul

SDOTOJ2088 refresh的停车场(栈和队列)

refresh的停车场 Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Submit Status Description refresh近期发了一笔横財,开了一家停车场.因为土地有限.停车场内停车数量有限,可是要求进停车场的车辆过多.当停车场满时,要进入的车辆会进入便道等待,最先进入便道的车辆会优先 进入停车场,并且停车场的结构要求仅仅出去的车辆必须是停车场中最后进去的车辆. 现告诉你停车场容

SDOTOJ2088 refresh的停车场

refresh的停车场 Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Submit Status Description refresh最近发了一笔横财,开了一家停车场.由于土地有限,停车场内停车数量有限,但是要求进停车场的车辆过多.当停车场满时,要进入的车辆会进入便道等待,最先进入便道的车辆会优先 进入停车场,而且停车场的结构要求只出去的车辆必须是停车场中最后进去的车辆.现告诉你停车场容量N

[rope大法好] STL里面的可持久化平衡树--rope

简单用法: #include <ext/rope> using namespace __gnu_cxx; int a[1000]; rope<int> x; rope<int> x(a,a + n); rope<int> a(x); x->at(10); x[10]; x->push_back(x) // 在末尾添加x x->insert(pos,x) // 在pos插入x x->erase(pos,x) // 从pos开始删除x个

C++ STL rope 可持久化平衡树 (可持久化数组)

官方文档好像 GG 了. rope 不属于标准 STL,属于扩展 STL,来自 pb_ds 库 (Policy-Based Data Structures). 基本操作: #include <ext/rope> // 头文件 using namespace __gnu_cxx; // 注意名称空间 rope<int> rp; int main() { rp.push_back(x); // 在末尾插入 x rp.insert(pos, x); // 在 pos 处插入 x rp.e

codevs 4244 平衡树练习(STL)

/* STL */ #include<iostream> #include<cstdio> #include<map> using namespace std; map<int,int>a; int main() { int n,m,i,j,k; scanf("%d%d",&n,&m); for(i=1;i<=n;i++) { int s; scanf("%d",&s); a[s]=1;

各种平衡树收集(收集控(‐^▽^‐))\平衡树模板题的各种花式做法QAQ

非旋转treap!!!(FHQ Treap) 递归版Splay(无需维护父指针) Scapegoat _ Tree——替罪羊树(一只(棵)特立独行的猪(树)) 宗法树(平衡线段树\finger_tree) 权值线段树/动态开点???(怎么混进来一棵线段树,神奇的玩意) 树状数组+二分??(怎么又混进来一个树状数组,貌似跟楼上差不多) PBDS(STL大法好) Leafy_tree(貌似用处不大) 01Tree(最坏32倍空间,再见) 原文地址:https://www.cnblogs.com/me