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线段树模板的更多相关文章

  1. 线段树模板hdu 1754:I Hate It

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  2. HDU1166:敌兵布阵(线段树模板)

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

  3. 线段树模板 hdu 1166 敌兵布阵

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

  4. [AHOI 2009] 维护序列(线段树模板题)

    1798: [Ahoi2009]Seq 维护序列seq Time Limit: 30 Sec  Memory Limit: 64 MB Description 老师交给小可可一个维护数列的任务,现在小 ...

  5. hdu1754 I hate it线段树模板 区间最值查询

    题目链接:这道题是线段树,树状数组最基础的问题 两种分类方式:按照更新对象和查询对象 单点更新,区间查询; 区间更新,单点查询; 按照整体维护的对象: 维护前缀和; 维护区间最值. 线段树模板代码 # ...

  6. P3373 线段树模板

    好,这是一个线段树模板. #include <cstdio> using namespace std; ; long long int sum[N],tag1[N],tag2[N],mo; ...

  7. UESTC - 1057 秋实大哥与花 线段树模板题

    http://acm.uestc.edu.cn/#/problem/show/1057 题意:给你n个数,q次操作,每次在l,r上加上x并输出此区间的sum 题解:线段树模板, #define _CR ...

  8. POJ 3468 A Simple Problem with Integers(线段树模板之区间增减更新 区间求和查询)

    A Simple Problem with Integers Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 140120 ...

  9. hdu 4819 二维线段树模板

    /* HDU 4819 Mosaic 题意:查询某个矩形内的最大最小值, 修改矩形内某点的值为该矩形(Mi+MA)/2; 二维线段树模板: 区间最值,单点更新. */ #include<bits ...

  10. POJ3468:A Simple Problem with Integers(线段树模板)

    A Simple Problem with Integers Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 149972 ...

随机推荐

  1. dotnet 代码优化 聊聊逻辑圈复杂度

    本文属于 dotnet 代码优化系列博客.相信大家都对圈复杂度这个概念很是熟悉,本文来和大家聊聊逻辑的圈复杂度.代码优化里面,一个关注的重点在于代码的逻辑复杂度.一段代码的逻辑复杂度越高,那么维护起来 ...

  2. thinkphp无法访问man.php/index/login

    配置半天.user.ini,权限问题解决了,但是还是访问不了后台登陆界面(链接:域名/man.php/index/login),后来发现是伪静态thinkphp没设置好,设置好后重启nginx就好啦

  3. MySQL-多表查询的两种方法、Navicat、python操作MySQL

    1.多表查询的两种方法 1.连表操作: 1.1:inner join:内连接,将两张表共同的部分连接起来生成一张新表.拼接顺序是把后面的表拼在前面的表,如果颠倒位置结果不同. select * fro ...

  4. 职场IT老手教你3步教你玩转可视化大屏设计,让领导眼前一亮!

    我是制造企业的IT中心的研发人员,平常工作就是配合业务部门出出报表,选型一些商业软件,并在内部负责实施运维.最近领导出去参观了一些数字化转型比较领先的工厂和制造企业,回来就甩给我几张图,问能不能我们也 ...

  5. WSL 2 内配置Fcitx自启动

    前言 我通过配置成fcitx进行服务进行,但其权限是root,在普通模式下无法使用 我用的是xserver ( moba xterm),我要在gtk mode 下启动fcitx,其实 不用这么写 操作 ...

  6. 线程基础知识02-CompletableFuture

    1 简介 Futrue可以监视目标线程调用call的情况,当你调用Future的get()方法以获得结果时,调用方的线程就被阻塞,直到目标线程的call方法结束并返回结果. 线程的实现方式有几种方式, ...

  7. fiddler的简单使用

    一.fiddler接口测试介绍 二.fiddler过滤器的使用 fiddler可以指定只抓哪些包,通过filters实现 如果需要抓取多个网站,各个需要抓取的网站之间用分号隔开 三.fiddler抓取 ...

  8. clion添加ROS环境变量

    gedit ~/.local/share/applications/jetbrains-clion.desktop 修改 Exec="/home/cjn/soft-pack/clion-20 ...

  9. TIM + DMA + ADC

    #include "public.h" #define FFT_POINT (256) static uint16_t _DmaBuffer[FFT_POINT]; static ...

  10. Vue的基础-属性

    VUE vue-cli脚手架,vue-router路由 vuex做状态管理 vue ui 界面 1.下载node.js 2.下载vue-cli cnpm install vue-cli -g 查看模版 ...