Fenwick Tree——树状数组

问题陈述:
你得到一个长度为 N 的数组为 a0,a1,a2……an-1。处理以下类型的查询,一共有 Q 次查询。

0 p x : ap⬅ap + x
1 l r : 打印  \sum_{l}^{r-1}ai  ( i=l 到 i=r-1 的 ai 之和)

约束:
1 ≤ N,Q ≤ 500000
0 ≤ ai,x ≤ 1e9
0 ≤ p < N
0 ≤ li < ri ≤ N
输入中的所有值都是整数

输入
输入由标准输入以以下格式给出:
N Q
a0 a1 ……an-1
Query0
Query1
.
.
QueryQ-1

输出
对于后一种类型的每个查询,打印答案。

Input
5 5
1 2 3 4 5
1 0 5
1 2 4
0 3 10
1 0 5
1 0 3

Output
15
7
25
6

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ios ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
typedef pair<int,int> PII;
const double PI=acos(-1.0);
const int N=2e6+10;
int a[N],tr1[N],tr2[N];
int n,m;
int lowbit(int x)
{return x&-x;
}
void add(int tr[],int x,int c)
{for (int i=x;i<=n;i +=lowbit(i)) tr[i] +=c;
}
int sum(int tr[],int x)
{int ans=0;for (int i=x;i>0;i -=lowbit(i)) ans +=tr[i];return ans;
}
int is_sum(int x)
{return sum(tr1,x)*(x+1)-sum(tr2,x);
}
signed main()
{ios;cin>>n>>m;for (int i=1;i<=n;i++) cin>>a[i];for (int i=1;i<=n;i++){int b=a[i]-a[i-1];add(tr1,i,b),add(tr2,i,i*b);}int s;while (m--){cin>>s;if (s==0){int l,c;cin>>l>>c;l++;add(tr1,l,c),add(tr1,l+1,-c);add(tr2,l,l*c),add(tr2,l+1,(l+1)*-c);}else {int l,r;cin>>l>>r;l++,r++;cout<<is_sum(r-1)-is_sum(l-1)<<endl;}}return 0;
}


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/340412.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv8-Seg改进:轻量化改进 | 超越RepVGG!浙大阿里提出OREPA:在线卷积重参数化

🚀🚀🚀本文改进:OREPA在线卷积重参数化巧妙的和YOLOV8结合,并实现轻量化 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1)手把手教你如何训练YOLOv8-seg; 2)模型创新,提升分割性能; 3)独家…

解决:TypeError: ‘dict_keys’ object does not support indexing

解决&#xff1a;TypeError: ‘dict_keys’ object does not support indexing 文章目录 解决&#xff1a;TypeError: dict_keys object does not support indexing背景报错问题报错翻译报错位置代码报错原因解决方法方法一&#xff1a;方法二&#xff1a;方法三&#xff1a;今…

2023年度产品评选!人人都是产品经理携手boardmix博思白板联合呈现!

榜单内容概览 2023年度产品评选活动&#xff0c;由人人都是产品经理发起&#xff0c;汇聚了众多引领行业风向的优秀产品&#xff0c;涵盖技术创新、数字化服务、AI效率、运营增长等多领域。这些杰出的产品经过多轮专业评委的严格评审与用户投票的热烈参与&#xff0c;最终脱颖…

IntelliJ IDEA Java 连接 mysql 配置(附完整 demo)

下载 MySQL 驱动 从MySQL官网下载JDBC驱动的步骤如下&#xff1a; 1&#xff09;访问MySQL的官方网站&#xff1a;MySQL 2&#xff09;点击页面上方的"DOWNLOADS"菜单&#xff1b; 3&#xff09;在下载页面&#xff0c;找到"MySQL Community (GPL) Downloads…

uniapp 设置底部导航栏

uniapp 设置原生 tabBar 底部导航栏。 设置底部导航栏 一、创建页面&#xff0c;一定要在 pages.json 文件中注册。 二、在 pages.json 文件中&#xff0c;设置 tabBar 配置项。 pages.json 页面 {"pages": [...],"globalStyle": {...},"uniIdRout…

RT-Thread 中断管理

中断管理 什么是中断&#xff1f;简单的解释就是系统正在处理某一个正常事件&#xff0c;忽然被另一个需要马上处理的紧急事件打断&#xff0c;系统转而处理这个紧急事件&#xff0c;待处理完毕&#xff0c;再恢复运行刚才被打断的事件。 生活中&#xff0c;我们经常会遇到这…

【操作系统】优化MBR程序:让MBR调用显存吧

一.显存、显卡以及显示器的概述 显卡用于连接CPU和显示器&#xff0c;我们调用显示器时&#xff0c;其实就是利用显卡提供的IO接口间接地对显示器进行操作&#xff0c;所以显卡也称之为显示适配器。接下来我们将优化之前写的MBR程序&#xff08;参考&#xff1a;【操作系统】BI…

【算法】基础算法001之双指针

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.数组分块&#xf…

数字孪生+可视化技术 构建智慧新能源汽车充电站监管平台

前言 充电基础设施为电动汽车提供充换电服务&#xff0c;是重要的交通能源融合类基础设施。近年来&#xff0c;随着新能源汽车产业快速发展&#xff0c;我国充电基础设施持续增长&#xff0c;已建成世界上数量最多、服务范围最广、品种类型最全的充电基础设施体系。着眼未来新…

基于css实现动画效果

介绍 本文将会基于css&#xff0c;实现各种动画效果&#xff0c;接下来会从简单几个例子入手。 案例 三颗球 <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8" /><title>React App</title><style>…

Unity编辑器扩展(外挂)

每日一句:未来的样子藏在现在的努力里 目录 什么是编译器开发 C#特性[System.Serializable] 特殊目录 命名空间 /*检视器属性控制*/ //添加变量悬浮提示文字 //给数值设定范围&#xff08;最小0&#xff0c;最大150&#xff09; //指定输入框&#xff0c;拥有5行 //默认…

js逆向第15例:猿人学第14题备而后动-勿使有变

文章目录 一、前言二、定位关键参数2.1 mz=如何得到?2.2 m=如何得到?2.3 变量c和e怎么来的?2.4 变量aa和bb怎么来的?2.5 函数E是什么?2.6 函数m5和函数gee是什么?三、代码实现四、参考文献一、前言 任务十四:抓取这5页的数字,计算加和并提交结果 此题难度还是很大,整…