JAVA线段树模板
public class LineTree{
int[] tree,nums;
int n;
public LineTree(int[] nums){
this.nums = nums;
n = nums.length;
tree = new int[n*4];
build(0, 0, n-1);
}
// 建立线段树
private void build(int node, int left, int right){
if(left == right){
tree[node] = nums[left];
}
int mid = left + ((left + right)>> 1);
build(2*node + 1, left, mid);
build(2*node + 2, mid + 1, right);
tree[node] = tree[2*node + 1] + tree[2*node + 2];
}
// 更新线段树
public void update(int node, int left, int right, int idx, int val){
if(left > right) return;
else if(left == right){
nums[left] = val;
tree[node] = val;
}else{
int mid = left + ((left + right)>> 1);
if(idx >= left && idx <= mid)
update(node * 2 + 1, left, mid, idx, val);
else
update(node * 2 + 2, mid + 1, right, idx, val);
tree[node] = tree[node*2 + 1] + tree[node*2 + 2];
}
}
// 查询线段树
public int query(int node, int left, int right, int L, int R){
if(right < L || left > R) return 0;
else if(left == right) return tree[node];
else if(L<= left && R >= right)return tree[node];
else{
int mid = left + ((right - left) >> 1);
return query(node*2+1, left, mid,L,R) + query(node*2+2, mid+1, right, L, R);
}
}
}
JAVA线段树模板的更多相关文章
- 线段树模板hdu 1754:I Hate It
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- HDU1166:敌兵布阵(线段树模板)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- 线段树模板 hdu 1166 敌兵布阵
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- [AHOI 2009] 维护序列(线段树模板题)
1798: [Ahoi2009]Seq 维护序列seq Time Limit: 30 Sec Memory Limit: 64 MB Description 老师交给小可可一个维护数列的任务,现在小 ...
- hdu1754 I hate it线段树模板 区间最值查询
题目链接:这道题是线段树,树状数组最基础的问题 两种分类方式:按照更新对象和查询对象 单点更新,区间查询; 区间更新,单点查询; 按照整体维护的对象: 维护前缀和; 维护区间最值. 线段树模板代码 # ...
- P3373 线段树模板
好,这是一个线段树模板. #include <cstdio> using namespace std; ; long long int sum[N],tag1[N],tag2[N],mo; ...
- UESTC - 1057 秋实大哥与花 线段树模板题
http://acm.uestc.edu.cn/#/problem/show/1057 题意:给你n个数,q次操作,每次在l,r上加上x并输出此区间的sum 题解:线段树模板, #define _CR ...
- POJ 3468 A Simple Problem with Integers(线段树模板之区间增减更新 区间求和查询)
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 140120 ...
- hdu 4819 二维线段树模板
/* HDU 4819 Mosaic 题意:查询某个矩形内的最大最小值, 修改矩形内某点的值为该矩形(Mi+MA)/2; 二维线段树模板: 区间最值,单点更新. */ #include<bits ...
- POJ3468:A Simple Problem with Integers(线段树模板)
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 149972 ...
随机推荐
- 如何通过Java代码在PDF中插入、替换或删除图像?
图文并茂的内容往往让人看起来更加舒服,如果只是文字内容的累加,往往会使读者产生视觉疲劳.搭配精美的文章配图则会使文章内容更加丰富,增加文章可读性的同时,也能提升用户体验.但由于PDF文档安全性较高,不 ...
- 红客突击队&突击队分队
红客突击队,于2019年,由队长k龙联合国内多位顶尖高校研究生牵头成立.其团队从成立至今多次参加国际网络安全竞赛并取得良好成绩,积累了丰富的竞赛经验.团队现有三十多位正式成员及若干预备人员,旨在打造国 ...
- angular---嵌套路由
- Hash table集合-练习_计算一个字符串中每个字符出现次数
Hash table集合 java.util.Hashtable<K,V>集合implements Map<K,V>接口Hashtable:底层也是一个哈希表,是一个线程安全的 ...
- Hive删除分区名称中含有特殊字符
先说方案:通过show partitions和hdfs url看到的都不是真正的分区名称,都是经过URI重新编码的,访问这些分区应该使用分区名称的原始字符串. 场景描述 当我们在SQL语句中使用变量时 ...
- File、FileReader、Base64、Blob基本使用以及Buffer、ArrayBuffer之间的转换
File文件 (File)对象获取文件的信息.实际上,File 对象是特殊类型的 Blob,Blob 的属性和方法都可以用于 File 对象.在js中,一般通过input元素,点击上传文件成功之后返回 ...
- windwos提权漏洞CVE-2023-21746复现(LocalPotato)
0x01 漏洞原理 LocalPotato攻击是一种针对本地认证的NTLM反射攻击. Windows NTLM 在进行身份验证时存在漏洞,允许拥有低权限的本地攻 击者通过运行特制程序将权限提升至 SY ...
- Linux练习题--打印文本第10行
文本test.txt,需要打印文本第10行 方法一: sed -n '10p' test.txt 说明:sed命令使用-n参数时,只有经过sed 特殊处理的那一行(或者动作)才会被列出来. 命令&qu ...
- ES6中的class对象和它的家人们
在ES6中新增了一个很重要的特性: class(类).作为一个在2015年就出了的特性, 相信很多小伙伴对class并不陌生.但是在日常开发中使用class的频率感觉并不高(可能仅限于作者),感觉对c ...
- JMeter BeanShell 学习
JMeter BeanShell 学习 Beanshell分为: JMeter有如下BeanShell组件: 定时器: BeanShell Timer 前置处理器:BeanShell PreProce ...