ACM模板——线段树树状数组ST表
int bit[maxn],n; void init() {n = maxn;memset(bit,0,sizeof(bit)); } int sum(int i) {int s = 0;while(i>0){s += bit[i];i -= i&-i;}return s; }void add(int i,int x) {while(i <= n){bit[i] += x;i += i&-i;} }
树状数组
int d[1000006][25]; int mn[1000006]; void rmq_init() {for(int i=1;i<=n;i++)d[i][0]=a[i];for(int j=1;(1<<j)<=n;j++)for(int i=1;i+(1<<j)-1<=n;i++)d[i][j]=min(d[i][j-1],d[i+(1<<(j-1))][j-1]);for(int len=1;len<=n;++len){int k=0;while((1<<(k+1))<=len)k++;mn[len]=k;} } int rmq(int L,int R) {int k=mn[R-L+1];return min(d[L][k],d[R-(1<<k)+1][k]); }
ST表
const int maxn = 504;int d[maxn][maxn]; int n; void init() {n = maxn;memset(d,0,sizeof(d)); } void update(int x,const int&y,const int&V) {for(;x<=n;x+=(x&(-x)))for(int j = y;j <= n;j += (j&(-j)))d[x][j]+=V; } int getsum(int x,const int &y) {int res = 0;for(;x;x -= x&(-x))for(int j = y;j;j-=j&(-j))res += d[x][j];return res; }
二维树状数组
const int maxn = 1 << 18;int n, dat[2*maxn];void init() {n = (1 << 18)-2;memset(dat,0,sizeof(dat)); }//更新第k(0-index)个值为a void update(int k,int a) {k += n+1;dat[k] = a;while(k>0){k = (k-1)/2;dat[k] = dat[k*2+1]+dat[k*2+2];} }//求[a,b)val //query(a,b,0,0,n) int query(int a,int b,int k,int l,int r) {//不相交if(r<a || b<l) return 0;if(a<=l && r<=b) {return dat[k];}else{int vl = query(a,b,k*2+1,l,(l+r)/2);int vr = query(a,b,k*2+2,(l+r)/2+1,r);return vl+vr;}return -1;//error }
线段树(单点更新区间查询)
int data[maxn<<2],datb[maxn<<2]; int n; void init() {n = maxn;memset(data,0,sizeof(data));memset(datb,0,sizeof(datb)); } //对[a,b)加x //add(a,b,x,0,0,n) void add(int a,int b,int x,int k,int l,int r) {if(a<=l && r<=b){data[k] += x;}else if(l < b && a < r){datb[k] += (min(b,r) - max(a,l)) * x;add(a,b,x,k*2+1,l,(l+r)/2);add(a,b,x,k*2+2,(l+r)/2,r);} }//sum(a,b,0,0,n) int sum(int a,int b,int k,int l,int r) {if(b<=l || r<=a){return 0;} else if(a <= l && r <= b){return data[k] * (r-l)+datb[k];}else{int res = (min(b,r) - max(a,l)) * data[k];res += sum(a,b,k*2+1,l,(l+r)/2);res += sum(a,b,k*2+2,(l+r)/2,r);return res;} }
线段树(区间更新区间查询)
ST表的板子是抄的:https://www.cnblogs.com/autsky-jadek/p/7327416.html
转载于:https://www.cnblogs.com/Asurudo/p/10658452.html
ACM模板——线段树树状数组ST表相关推荐
- bzoj5308[Zjoi2018]胖(线段树,二分,st表)
Description Cedyks是九条可怜的好朋友(可能这场比赛公开以后就不是了),也是这题的主人公. Cedyks是一个富有的男孩子.他住在著名的ThePLace(宫殿)中. Cedyks是一个 ...
- ACM模板 | 学习笔记 树相关
持续更新中qwq 咕咕咕 此次update是在我原先自己的博客园博客的基础上进行更新的(隔了两年该忘的不该忘的都忘完了qwq),顺便整理一下我的acm模板QAQ (我保证2021.3.1开学之前搞完! ...
- 后缀数组 ---- 2018~2019icpc焦作H题[后缀数组+st表+二分+单调栈]
题目链接 题目大意: 给出nnn个数,定义f[l,r]f[l,r]f[l,r]表示 区间[l,r][l,r][l,r]的最大值,求所有 子区间的最大值的和,要求相同的子区间只能算一次 比如数列 5 6 ...
- [luoguP2463] [SDOI2008]Sandy的卡片(后缀数组 + st表)
传送门 很容易想到,题目中的相同是指差分数组相同. 那么可以把差分数组连起来,中间加上一个没有出现过的且字典序小的数 双指针移动,用st表维护height数组中的最小值. 当然用单调队列应该也可以且更 ...
- 【BZOJ4310】跳蚤,后缀数组+ST表求LCP+二分答案
Time:2016.05.26 Author:xiaoyimi 转载注明出处谢谢 传送门 思路: 首先要求出不同子串的个数 有这样一个性质 一个串中不同子串的总数=∑(len-height[i]-sa ...
- 树状数组(求逆序对)
一.树状数组是什么 树状数组,又称二进制索引树,英文名Binary Indexed Tree 之前遇到一个求逆序对的题,看了很多题解都只说了这个树状数组,关于怎么实现的全都避而不谈,我研究了一下午,总 ...
- [51nod] 1766树上的最远点对 树的直径 树剖LCA+ST表静态查询
题意: 给你一棵带权树,q次查询,每次给出两个区间,[l1,r1][l2,r2][l_1,r_1] [l_2,r_2][l1,r1][l2,r2]从这两个区间中分别选择两个数字,使得这两个点的 ...
- 【JZOJ5064】【GDOI2017第二轮模拟day2】友好城市 Kosarajo算法+bitset+ST表+分块
题面 在Byteland 一共有n 座城市,编号依次为1 到n,这些城市之间通过m 条单向公路连接. 对于两座不同的城市a 和b,如果a 能通过这些单向道路直接或间接到达b,且b 也能如此到达a,那么 ...
- 【cogs2711】jump,二分答案+倍增套ST表
传送门 思路: 好久没写题解了来爽一发 还是比较有意思的一道题目 首先想到二分答案x,我们枚举每一个点i,点i在x步内所能到达的点显然能形成一个区间[L i ,R i ] [L_i,R_i],那么[1 ...
最新文章
- c# out ref
- javaweb学习总结(七)——HttpServletResponse对象(一)
- python章节总结_《Python深度学习》第一章总结
- 03_ClickHouse数据格式,TabSeparated、TSKV、CSV格式、JSON格式、Parquet、ORC、其它数据格式(Native,Pretty,Values,Vertical等)
- spark.mllib:bagging方法
- SharePoint 2010 文档管理系列
- Pycharm快速入门(5) — Python解释器和环境配置
- 毕业设计 基于大数据的社交平台数据爬虫舆情分析可视化系统
- xml--json代码大全
- 二维向量叉积的几何意义
- php文章排序,php实现的常见排序算法汇总
- 物联网应用网站数据库设计
- FPGA-DDR总线电源硬件设计技巧-Fly-by走线阻抗
- 【引路帖】【MATLAB】【求解最优化问题】
- java吃水果小游戏中水果,蔬菜等的重画
- 跑跑卡丁车辅助[免费辅助]跑跑卡丁车手游挂机自动日常肝图刷车刷道具
- LED背光源运用在温控设备上
- C语言程序设计(第4版)谭浩强著—学习笔记chapter one 程序设计与C语言
- 试用微软 必应输入法 功能简洁
- 【红日靶场系列】ATTCK红队评估3
热门文章
- 前端aes加密_前端安全攻防解析
- 服务器中W3SVC1文件夹的文件,完美解决IIS 服务器无法加载应用程序 '/LM/W3SVC/1/ROOT'。错误是 '没有注册类别...
- windows 2003 server右键菜单没有共享选项的解决办法
- python更改文件路径 unable_python 安装无效:无法打开/usr/lib/python2. 7/config/Makefile ( 没有此类文件或者目录)...
- c语言static知识点,C语言知识点集锦
- PhysioToolkit 软件目录
- 扬州大学广陵学院c语言试卷,扬州大学广陵学院交直流调速复习题答案(试卷)
- 如何读出烧录程序.bin的数据_如何改变程序搜索数据的方式?使用Redis进行搜索...
- 雷丰阳spring系列的笔记_怒肝8个月源码,我成为了 Spring 开源贡献者
- MySQL 基数的定义