代码如下:

#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:敌兵布阵  线段树的主要操作:(1)建立线段树(Build)          (2)更新区间值 (Update)           (3)查询区间(Query) 写法一: #include ...

  2. hdu3074 线段树求区间乘积(单点更新)

    题意:       给你n个数,两种操作,(1) 把第b个数改成c (2)算出b-c的乘积,结果对1000000007取余. 思路:       线段树单点更新,简单题目,不多解释,具体看代码. #i ...

  3. 【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 ...

  4. HDU 3308 线段树求区间最长连续上升子序列长度

    题意:两种操作,Q L R查询L - R 的最长连续上升子序列长度,U pos val 单点修改值 #include <bits/stdc++.h> #define N 100005 us ...

  5. Distinct Characters Queries CodeForces - 1234D(线段树求区间字母种类数)

    You are given a string ss consisting of lowercase Latin letters and qq queries for this string. Reca ...

  6. 线段树求区间最大值RMQ(单点更新)

    题目:HDU1754 #include <stdio.h> #define maxn 222222 #define lson l,m,rt<<1 #define rson m+ ...

  7. java-HDU1698(线段树的区间更新,和区间查询)

    HDU1698: 题目意思: Just a Hook Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Ja ...

  8. 线段树(区间修改,区间查询)

    线段树的区间修改 本题如果用单点修改的思想会T,所以需要引入一个数组lazylazylazy , 优秀程序员必备 lazylazylazy定义 此为偷懒 该数组意在储存 treetreetree 数组 ...

  9. P6617 查找 Search 线段树 查找区间内是否有两个和为w的数(w不变)

    题解: 每个点x,设置其前驱为离其最近的w-x的位置 每次修改可能影响O(n)个位置: w-x x x x x x x- 这样后面每个位置的前驱都是w-x 如果修改了w-x的值,这样会导致O(n)个修 ...

最新文章

  1. 实现在页面上隐藏某个元素的css,有趣的css—隐藏元素的7种思路
  2. Activity中与ListActivity中使用listview区别
  3. python3编译器怎么下载_Python编译器及Sublime Text3安装及开发环境配置
  4. C++栈内存与文字常量区
  5. 使用SELECT 和OPEN CURSOR 读取big table的性能比较
  6. 产品运行所需的信息检索失败_为服务业注入新活力,华北工控推出服务机器人专用计算机产品方案...
  7. HDU 6096 AC自动机
  8. 哪些数据类型能使用切片操作python_Python学习之路「16」非数字数据类型-切片-slice...
  9. 数字化风控全流程 实操课程V2.0 第三期
  10. 更换map的遍历顺序优先级_树的级别顺序遍历或宽度优先遍历
  11. SQL 获取当前系统时间 以及对日期的加减处理
  12. vertx web client 接收文件上传file-uploads及删除上传文件
  13. 新网站链接提交入口攻略
  14. 区块链的20种应用场景
  15. 专为《巫师3》打造 次世代RedEngine 3引擎公布
  16. 原生JS实现弹幕的简单操作速成
  17. 1080Ti+windows7和1080Ti+windows10的区别
  18. 二叉树所有节点数、叶子节点数的计算
  19. 2020年第三季度BEC商业邮件攻击暴增155%
  20. 全国计算机考试进制计算器吗,进制数换算器(十六进制计算器在线)

热门文章

  1. 【摄影测量原理】第二章:单幅影像解析基础
  2. C语言试题三十八之将s所指字符串中除了下标为偶数、同时ascii值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的一个数组中。
  3. Android之Debug运行项目一直卡在Debug界面(can‘t bind to local 8066 for debug)
  4. linux之Vim用快捷键快速移动光标至行首和行尾
  5. linux c之assert函数使用总结
  6. windows之DNS7种资源记录和flushdns命令清除DNS缓存以及nslookup解析域名和ipconfig/all命令查看网络配置使用总结
  7. linux之vim怎么跳到指定的一行
  8. ubuntu上最使用jni最简单易懂的例子
  9. Android之玩转MPAndroidChart让(折线图、柱形图、饼状图、散列图、雷达图)优雅的舞动
  10. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(七)我把魔法变成了积木