AcWing||1264. 动态求连续区间和

活动地址:https://www.acwing.com/activity/content/19/

考察要点:线段树

题目要求

给定 n 个数组成的一个数列,规定有两种操作,一是修改某个元素,二是求子数列 [a,b] 的连续和。

输入格式
第一行包含两个整数 n 和 m,分别表示数的个数和操作次数。

第二行包含 n 个整数,表示完整数列。

接下来 m 行,每行包含三个整数 k,a,b (k=0,表示求子数列[a,b]的和;k=1,表示第 a 个数加 b)。

数列从 1 开始计数。

输出格式
输出若干行数字,表示 k=0 时,对应的子数列 [a,b] 的连续和。

数据范围

1≤n≤100000,
1≤m≤100000,
1≤a≤b≤n

输入样例:

10 5
1 2 3 4 5 6 7 8 9 10
1 1 5
0 1 3
0 4 8
1 7 5
0 4 8

输出样例:

11
30
35

题目地址:https://www.acwing.com/problem/content/1266/

解析:

按照y总说的数状数组是M4A1比较的精准但是条件要求比较严苛,恶劣环境下比较容易失灵,但是AK47(线段数)比较粗糙,但是伤害的,很多环境都可以稳定使用。

下图bulid的过程

//线段树
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;const int N =100010;
int n, m;
int w[N];struct Node
{int l, r;int sum;
}tr[4 * N];void pushup(int u)
{tr[u].sum = tr[u << 1].sum + tr[u <<1 | 1].sum;
}void build(int u, int l, int r)
{if(l == r) tr[u] = {l, r , w[r]};  //只有一个点,本身为最大值else{tr[u] = {l, r};        //有其他点tr[u].l = l tr[u].r = r tr[u].sum = 0 //sum 后面pushup会求出int mid = l + r >> 1;   //求中点分叉build(u << 1, l, mid), build(u << 1 | 1, mid + 1, r);pushup(u);}
}int query(int u, int l, int r)//求和
{if(tr[u].l >= l && tr[u].r <= r) return tr[u].sum; //该节点完全包含着直接加入int mid = tr[u].l + tr[u].r >> 1;          int sum = 0;if(l <= mid) sum = query(u << 1, l, r);  //左边有值 一开始为零 可以直接等于?if(r > mid)  sum += query(u << 1 |1, l, r);//右边有值 继续加上return sum;
}void modify(int u, int x, int v) //从根开始找到有这个数的加上v
{if(tr[u].l == tr[u].r) tr[u].sum += v;else{int mid = tr[u].l + tr[u].r >> 1;if(x <= mid) modify(u << 1, x, v);else modify(u << 1 | 1, x ,v);pushup(u);}
}int main()
{scanf("%d%d", &n , &m);for (int i = 1; i <= n; i ++ ) scanf("%d", &w[i]);build(1, 1, n);  //构建线段数int k, a, b;while (m -- ){scanf("%d%d%d", &k,&a,&b);if(k == 0) printf("%d\n", query(1, a, b));else modify(1, a, b);}return 0;
}

本题:1264. 动态求连续区间和
代码参考:视频讲解

蓝桥杯学习记录||1264. 动态求连续区间和 | 线段树相关推荐

  1. 蓝桥杯学习记录-基础练习

    注:每天都更新哦~,题目下面的代码都是经过测试正确的,欢迎有更好算法的大神指正,我会把您的代码也附上,相互学习. 蓝桥杯-基础练习:所有题 十六进制转八进制 进制转换 字符 循环 十六进制转十进制 进 ...

  2. 1264. 动态求连续区间和

    给定 n 个数组成的一个数列,规定有两种操作,一是修改某个元素,二是求子数列 [a,b] 的连续和. 输入格式 第一行包含两个整数 n 和 m,分别表示数的个数和操作次数. 第二行包含 n 个整数,表 ...

  3. 【ACWing】1264. 动态求连续区间和

    题目地址: https://www.acwing.com/problem/content/description/1266/ 给定 n n n个数组成的一个数列,规定有两种操作,一是修改某个元素,二是 ...

  4. 【蓝桥杯学习记录】【6】不定方程的解法

    一次不定方程 4 * x - 5 * y = 7; ax + by = c;         a = 4 , b = -5 , c = 7;  ax = c - by;   1 .先求一个特殊解   ...

  5. 蓝桥杯学习记录||ALGO-1004 无聊的逗

    无聊的逗 问题描述 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在 ...

  6. 【蓝桥杯学习笔记】9. 解立方根——二分法+牛顿迭代法

    系列文章目录 [蓝桥杯学习笔记]1. 入门基本语法及练习题 [蓝桥杯学习笔记]2. 常用模型----最大公约数和最小公倍数 [蓝桥杯学习笔记]3. 质数判断 [蓝桥杯学习笔记]5. 矩阵乘法 [蓝桥杯 ...

  7. 2022蓝桥杯学习——6.双指针、BFS和图论

    一.双指针 关于双指针 核心思想就是优化!! 双指针只用一层循环,虽然里面是while,但j只执行了n次,所以ij一共就是2n,时间复杂度就是O(n) , 这种题一般先写出暴力算法,然后看单调性,如果 ...

  8. 蓝桥杯学习笔记--工厂灯光控制系统(小蜜蜂笔记作业)

    文章目录 前言 一.功能要求 1.功能图 二.硬件分析 1.功能一硬件电路: 2.功能二硬件电路: 3.功能三硬件电路: 4.功能四硬件电路: 三.代码 1.整体流程(主函数) 2.138选择函数与关 ...

  9. 2022蓝桥杯学习——4.枚举、模拟与排序

    一.枚举 蓝桥杯真题 1.连号区间 题目描述 小明这些天一直在思考这样一个奇怪而有趣的问题: 在 1∼N 的某个排列中有多少个连号区间呢? 这里所说的连号区间的定义是: 如果区间 [L,R] 里的所有 ...

最新文章

  1. 14 图的基础知识-几种常用的存储结构
  2. Windows 7防火墙设置详解(三)
  3. c++工程师面试常见问题之c++中四种cast转换
  4. 解决 Windows Update 时提示当前无法检查更新,因为未运行服务
  5. Eclipse之ANT使用
  6. LeetCode 1055. 形成字符串的最短路径(贪心)
  7. Mysql,Zookeeper,Redis,Mongodb压力测试结果
  8. Python基础:常用知识点汇总
  9. 360 n6 linux内核版本,五年26个版本:Linux系统内核全程回顾
  10. 计算机信息机房,计算机信息中心机房建设标准
  11. 响应服务器589,示例HTTP范围请求会话
  12. Python3.x:pytesseract识别率提高(样本训练)
  13. java nextDouble exception_java 控制台输入输出 nextdouble问题
  14. [升级失效]超星学术视频下载分析
  15. Total Variation
  16. 冰冻三尺,非一日之寒。数据解析——bs4
  17. 红米1A显示器于笔记本win10环境下,如何设置颜色范围使得显示器亮度恢复成250nit
  18. 1 is not JSON serializable的解决方案
  19. 带宽与速度的换算(表达式+例子)
  20. java压缩mp4大小_压缩的mp4视频播放时间太长(exoplayer)

热门文章

  1. eel+html 2 exe
  2. word修改后没保存/打开了自动保存没有恢复
  3. 计算机中各进制之间的转换
  4. 【论文-笔记】软件化雷达显示终端的设计与实现
  5. 【Latex 格式】Markdown或者LaTeX在单个字母上加一横、一点、两点、三角
  6. 猎聘和BOSS直聘谁会成为在线招聘的最后赢家?
  7. 学习Python单利模式
  8. #NAME?_#NAME?
  9. 解决mount.nfs: /home/xxxx/mpi-install is busy or already mounted问题
  10. Universal Robot——在Gazebo中模拟UR5机器人