C++实现线段树求区间和-区间查询
代码如下:
#include <iostream>
using namespace std;
const int N = 10010;
int input[N];struct node {int l, r;int sum;
} tree[4 * N];void build(int l, int r, int u)//建树{tree[u].l = l;tree[u].r = r;if (l == r) {tree[u].sum = input[l];return ;}int mid = (l + r) >> 1;build(l, mid, 2 * u);build(mid + 1, r, 2 * u + 1);tree[u].sum = tree[2 * u].sum + tree[2 * u + 1].sum;
}int query(int l, int r, int u)//查询[l,r]的所有元素总和{if (tree[u].l >= l && tree[u].r <= r) {return tree[u].sum;}if (tree[u].r < l || tree[u].l > r)return 0;int s = 0;if (tree[2 * u].r >= l)s += query(l, r, 2 * u);if (tree[2 * u + 1].l <= r)s += query(l, r, 2 * u + 1);return s;
}int main() {int n;cin >> n;for (int i = 1; i <= n; i++)cin >> input[i];build(1, n, 1);int cnt;cin >> cnt;while (cnt--) {int a, b;cin >> a >> b;cout << query(a, b, 1) << endl;}return 0;
}
C++实现线段树求区间和-区间查询相关推荐
- 线段树求区间和(单点更新)
题目1:敌兵布阵 线段树的主要操作:(1)建立线段树(Build) (2)更新区间值 (Update) (3)查询区间(Query) 写法一: #include ...
- hdu3074 线段树求区间乘积(单点更新)
题意: 给你n个数,两种操作,(1) 把第b个数改成c (2)算出b-c的乘积,结果对1000000007取余. 思路: 线段树单点更新,简单题目,不多解释,具体看代码. #i ...
- 【HDU - 5649】DZY Loves Sorting(线段树,区间更新区间查询,思维,01缩数变换,线段树分割)
题干: DZY has a sequence a[1..n]a[1..n]. It is a permutation of integers 1∼n1∼n. Now he wants to perfo ...
- HDU 3308 线段树求区间最长连续上升子序列长度
题意:两种操作,Q L R查询L - R 的最长连续上升子序列长度,U pos val 单点修改值 #include <bits/stdc++.h> #define N 100005 us ...
- Distinct Characters Queries CodeForces - 1234D(线段树求区间字母种类数)
You are given a string ss consisting of lowercase Latin letters and qq queries for this string. Reca ...
- 线段树求区间最大值RMQ(单点更新)
题目:HDU1754 #include <stdio.h> #define maxn 222222 #define lson l,m,rt<<1 #define rson m+ ...
- java-HDU1698(线段树的区间更新,和区间查询)
HDU1698: 题目意思: Just a Hook Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
- 线段树(区间修改,区间查询)
线段树的区间修改 本题如果用单点修改的思想会T,所以需要引入一个数组lazylazylazy , 优秀程序员必备 lazylazylazy定义 此为偷懒 该数组意在储存 treetreetree 数组 ...
- P6617 查找 Search 线段树 查找区间内是否有两个和为w的数(w不变)
题解: 每个点x,设置其前驱为离其最近的w-x的位置 每次修改可能影响O(n)个位置: w-x x x x x x x- 这样后面每个位置的前驱都是w-x 如果修改了w-x的值,这样会导致O(n)个修 ...
最新文章
- 实现在页面上隐藏某个元素的css,有趣的css—隐藏元素的7种思路
- Activity中与ListActivity中使用listview区别
- python3编译器怎么下载_Python编译器及Sublime Text3安装及开发环境配置
- C++栈内存与文字常量区
- 使用SELECT 和OPEN CURSOR 读取big table的性能比较
- 产品运行所需的信息检索失败_为服务业注入新活力,华北工控推出服务机器人专用计算机产品方案...
- HDU 6096 AC自动机
- 哪些数据类型能使用切片操作python_Python学习之路「16」非数字数据类型-切片-slice...
- 数字化风控全流程 实操课程V2.0 第三期
- 更换map的遍历顺序优先级_树的级别顺序遍历或宽度优先遍历
- SQL 获取当前系统时间 以及对日期的加减处理
- vertx web client 接收文件上传file-uploads及删除上传文件
- 新网站链接提交入口攻略
- 区块链的20种应用场景
- 专为《巫师3》打造 次世代RedEngine 3引擎公布
- 原生JS实现弹幕的简单操作速成
- 1080Ti+windows7和1080Ti+windows10的区别
- 二叉树所有节点数、叶子节点数的计算
- 2020年第三季度BEC商业邮件攻击暴增155%
- 全国计算机考试进制计算器吗,进制数换算器(十六进制计算器在线)
热门文章
- 【摄影测量原理】第二章:单幅影像解析基础
- C语言试题三十八之将s所指字符串中除了下标为偶数、同时ascii值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的一个数组中。
- Android之Debug运行项目一直卡在Debug界面(can‘t bind to local 8066 for debug)
- linux之Vim用快捷键快速移动光标至行首和行尾
- linux c之assert函数使用总结
- windows之DNS7种资源记录和flushdns命令清除DNS缓存以及nslookup解析域名和ipconfig/all命令查看网络配置使用总结
- linux之vim怎么跳到指定的一行
- ubuntu上最使用jni最简单易懂的例子
- Android之玩转MPAndroidChart让(折线图、柱形图、饼状图、散列图、雷达图)优雅的舞动
- 《假如编程是魔法之零基础看得懂的Python入门教程 》——(七)我把魔法变成了积木