当前位置: 首页 > news >正文

P3368 【模板】树状数组 2 (区间修改,单点查询)

本题链接:【模板】树状数组 2 - 洛谷

题目:

输入
5 5
1 5 4 2 3
1 2 4 2
2 3
1 1 5 -1
1 3 5 7
2 4
输出
6
10

思路:

        根据题意,这里是需要区间添加值,单点查询值。如果区间添加值中暴力去一个个加值,肯定会TLE,所以我们这里运用到了模板树状数组的重要作用了。

        根据 差分 的性质,我们知道,区间加值,我们可以构造一个前缀和数组来表示当前原数组的元素值,对此,进行区间的修改,有效的避免O(n)的时间复杂度。

所以我们可以结合,树状数组的前缀和 + 差分 性质,达到区间修改,单点查询的效果。

下面给出操作函数:

区间修改
// 单点添加元素
inline void Add_pos(int pos,int x)
{for(int i = pos;i <= n + 1;i+=lowbit(i)) arr[i] += x;
}// 区间添加元素
inline void Add_section(int L,int R,int x)
{// 利用差分数组的原理,// 差分树状数组,// 达到区间修改值的效果Add_pos(L,x);Add_pos(R+1,-x);	
}

单点查询
// 差分前缀和 单点查询
inline int Ask_pos(int pos)
{// 利用 差分 性质// 差分的前缀和,就是当前的元素值// 所以树状数组求前缀和,返回当前下标的元素值int ans = 0;for(int i = pos;i;i-=lowbit(i)) ans += arr[i];return ans;
}

代码详解如下:

#include <iostream>
#include <vector>
#include <queue>
#include <cstring>
#include <algorithm>
#include <unordered_map>
#define endl '\n'
#define int long long
#define YES puts("YES")
#define NO puts("NO")
#define lowbit(x) (x&(-x))
#define umap unordered_map
#define All(x) x.begin(),x.end()
//#pragma GCC optimize(3,"Ofast","inline")
#define IOS std::ios::sync_with_stdio(false),cin.tie(0), cout.tie(0)
using namespace std;
const int N = 7e7 + 10;int n,m;
int arr[N];	// 构造 差分树状数组
int a[N];	// 记录原数组初始值// 单点添加元素
inline void Add_pos(int pos,int x)
{for(int i = pos;i <= n + 1;i+=lowbit(i)) arr[i] += x;
}// 区间添加元素
inline void Add_section(int L,int R,int x)
{// 利用差分数组的原理,// 差分树状数组,// 达到区间修改值的效果Add_pos(L,x);Add_pos(R+1,-x);	
}// 差分前缀和 单点查询
inline int Ask_pos(int pos)
{// 利用 差分 性质// 差分的前缀和,就是当前的元素值// 所以树状数组求前缀和,返回当前下标的元素值int ans = 0;for(int i = pos;i;i-=lowbit(i)) ans += arr[i];return ans;
}inline void solve()
{cin >> n >> m;for(int i = 1;i <= n;++i){cin >> a[i];Add_pos(i,a[i] - a[i - 1]);	// 单点添加 初始值 的 差分元素}while(m--){int op;cin >> op;if(op == 1){int L,R,x;cin >> L >> R >> x;Add_section(L,R,x);	// 区间添加值	}else{int pos;cin >> pos;	// 差分前缀和单点查询cout << Ask_pos(pos) << endl;}}
}signed main()
{
//	freopen("a.txt", "r", stdin);
//	IOS;int _t = 1;
//	cin >> _t;while (_t--){solve();}return 0;
}

最后提交:

相关文章:

P3368 【模板】树状数组 2 (区间修改,单点查询)

本题链接&#xff1a;【模板】树状数组 2 - 洛谷 题目&#xff1a; 输入 5 5 1 5 4 2 3 1 2 4 2 2 3 1 1 5 -1 1 3 5 7 2 4 输出 6 10 思路&#xff1a; 根据题意&#xff0c;这里是需要区间添加值&#xff0c;单点查询值。如果区间添加值中暴力去一个个加值&#xff0c;肯定…...

智慧城市运营管理平台解决方案:PPT全文61页,附下载

关键词&#xff1a;智慧城市建设方案&#xff0c;智慧城市解决方案&#xff0c;智慧城市的发展前景和趋势&#xff0c;智慧城市建设内容&#xff0c;智慧城市运营管理平台 一、智慧城市运营平台建设背景 随着城市化进程的加速&#xff0c;城市面临着诸多挑战&#xff0c;如环…...

Vue性能优化方法

一、前言 1.1 为什么需要性能优化 用户体验&#xff1a;优化性能可以提升用户体验&#xff0c;降低加载时间和响应时间&#xff0c;让用户更快地看到页面内容。SEO优化&#xff1a;搜索引擎更喜欢快速响应的网站&#xff0c;优化性能可以提高网站的排名。节约成本&#xff1…...

关于网站的favicon.ico图标的设置需要注意的几点

01-必须在网页的head标签中放上对icon图标的说明语句&#xff1a; 比如下面这样的语句&#xff1a; <link rel"shortcut icon" href"/favicon.ico">否则&#xff0c;浏览器虽然能读到图标&#xff0c;但是不会把图标显示在标签上。 02-为了和本地开…...

PHP中关于func_get_args()方法

首先呢这个函数出现的是比较早的,大致应该是PHP4出现的, func_get_args — 返回一个包含函数参数列表的数组 说明 func_get_args(): array 获取函数参数列表的数组。 该函数可以配合 func_get_arg() 和 func_num_args() 一起使用&#xff0c;从而使得用户自定义函数可以接…...

EMA训练微调

就是取前几个epoch的weight的平均值&#xff0c;可以缓解微调时的灾难性遗忘&#xff08;因为新数据引导&#xff0c;模型权重逐渐&#xff0c;偏离训练时学到的数据分布&#xff0c;忘记之前学好的先验知识&#xff09; class EMA():def __init__(self, model, decay):self.…...

Kafka集群部署详细教程

版本说明 Ubuntu 18.04.6Zookeeper 3.5.9Kafka 2.7.0JDK8 集群配置 操作系统ip域名Zookeeper 端口Kafka 端口Ubuntu 18.04.6192.168.50.131kafka1.com21819092Ubuntu 18.04.6192.168.50.132kafka2.com21819092Ubuntu 18.04.6192.168.50.133kafka3.com21819092 安装 vim, cu…...

交叉编译

1. 交叉开发 交叉编译&#xff1a; 在电脑把程序编写 编译 调试好 再下载到嵌入式产品中运行 编译&#xff1a; gcc 之前编译环境和运行环境是一样的 交叉编译&#xff1a; 编译 把编译代码和运行分开 编译代码在虚拟机中 运行…...

数据结构与算法之递归: LeetCode 46. 全排列 (Typescript版)

全排列 https://leetcode.cn/problems/permutations/ 描述 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,…...

SQL中 JOIN 的两种连接类型:内连接(自然连接、自连接、交叉连接)、外连接(左外连接、右外连接、全外连接)

SQL中 JOIN 的两种连接类型&#xff1a;内连接&#xff08;自然连接、自连接、交叉连接&#xff09;、外连接&#xff08;左外连接、右外连接、全外连接&#xff09; 1. 自然连接&#xff08;natural join&#xff09;&#xff08;内连接&#xff09; 学生表 mysql> sele…...

微信小程序记住密码,让登录解放双手

密码是用户最重要的数据&#xff0c;也是系统最需要保护的数据&#xff0c;我们在登录的时候需要用账号密码请求登录接口&#xff0c;如果用户勾选记住密码&#xff0c;那么下一次登录时&#xff0c;我们需要将账号密码回填到输入框&#xff0c;用户可以直接登录系统。我们分别…...

国内划片机行业四大企业之博捷芯:技术驱动,领跑未来

在国内划片机行业中&#xff0c;公司以其卓越的技术实力和持续的创新精神&#xff0c;迅速崭露头角。作为国内划片机行业的四大企业之一&#xff0c;公司以其专业、高品质的划片机设备和解决方案&#xff0c;引领着行业的发展。 公司自创立以来&#xff0c;一直专注于划片机设备…...

后端整合Swagger+Knife4j接口文档

后端整合SwaggerKnife4j接口文档 接口文档介绍 什么是接口文档&#xff1a;写接口信息的文档&#xff0c;条接口包括&#xff1a; 请求参数响应参数 错误码 接口地址接口名称请求类型请求格式备注 为什么需要接口文档 who用&#xff1f;后端提供&#xff0c;前后端都需要使用…...

k8s中批量处理Pod应用的Job和CronJob控制器介绍

目录 一.Job控制器 1.简介 2.Jobs较完整解释 3.示例演示 4.注意&#xff1a;如上例的话&#xff0c;执行“kubectl delete -f myJob.yaml”就可以将job删掉 二.CronJob&#xff08;简写为cj&#xff09; 1.简介 2.CronJob较完整解释 3.案例演示 4.如上例的话&#xf…...

UE5 范围内随机生成

打开插件 BP_Actor...

杂记 | 使用Docker安装并配置MongoDB以支持事务(单副本,并解决了证书文件错误的问题)

文章目录 00 安装前的准备01 创建Docker Compose文件02 设置证书文件03 启动MongoDB04 初始化副本集和创建用户05 验证安装 00 安装前的准备 在开始之前&#xff0c;确保已经安装了Docker&#xff0c;本文基于Docker Compose进行示范&#xff0c;没有装Docker Compose也可将其…...

css三角,鼠标样式,溢出文字

目录 css三角 鼠标样式 例子&#xff1a;页码模块 溢出文字表示方式 margin负值运用 css三角强化 css三角 css三角中&#xff1a;line-height&#xff1a;0和font-size&#xff1a;0是防止兼容性的问题 jd {position: relative;width: 120px;height: 249px;background-…...

远程桌面访问MATLAB 2018B,提示License Manger Error -103,终极解决方案

通过远程桌面方位Windows Server系统下的MATLAB2018B&#xff0c;报错License Manger Error -103&#xff0c;Crack文件夹下的dll文件已经替换&#xff0c;同时也已经输出了lic文件&#xff0c;但是仍然无法打开。但是在本地桌面安装就没有问题。初步怀疑MATLAB的License使用机…...

Jmeter基础和概念

JMeter 介绍&#xff1a; 一个非常优秀的开源的性能测试工具。 优点&#xff1a;你用着用着就会发现它的重多优点&#xff0c;当然不足点也会呈现出来。 从性能工具的原理划分&#xff1a; Jmeter工具和其他性能工具在原理上完全一致&#xff0c;工具包含4个部分&#xff1a; …...

【Linux 带宽限速】trickle,限制docker 上传速度

限制docker 上传速度 然而&#xff0c;你可以使用第三方工具来实现这个目的。一个常用的工具是 trickle&#xff0c;它可以模拟网络带宽。 首先&#xff0c;你需要安装 trickle。在 Ubuntu 上&#xff0c;可以使用以下命令安装&#xff1a; sudo apt-get install trickle然后…...

CVPR 2023反无人机数据集实战:用ModelScope上的开源模型快速上手目标检测

CVPR 2023反无人机数据集实战&#xff1a;用ModelScope上的开源模型快速上手目标检测无人机技术的普及带来了新的安全挑战&#xff0c;从隐私侵犯到关键设施威胁&#xff0c;反无人机技术正成为计算机视觉领域的热点。CVPR 2023反无人机竞赛提供的开源数据集和基线模型&#xf…...

Hitboxer:开源SOCD清理工具,3分钟提升游戏操作精准度

Hitboxer&#xff1a;开源SOCD清理工具&#xff0c;3分钟提升游戏操作精准度 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 你是否在激烈的游戏对抗中经历过这样的挫败&#xff1a;同时按下左右方向键时角色卡…...

从电磁炉到户外电源:拆解单相SVPWM如何让你的逆变器更安静、更高效

从电磁炉到户外电源&#xff1a;单相SVPWM如何实现静音与高效的双重突破当你深夜用电磁炉煮面时&#xff0c;是否曾被突然的蜂鸣声吓一跳&#xff1f;或是发现户外电源给设备充电时&#xff0c;散热风扇的噪音盖过了山林鸟鸣&#xff1f;这些常见问题背后&#xff0c;隐藏着一个…...

BurpSuite 2025插件开发JDK版本兼容性实战指南

1. 为什么BurpSuite插件开发环境总在JDK版本上翻车&#xff1f;你是不是也经历过&#xff1a;下载好BurpSuite最新版2025.4&#xff0c;兴冲冲打开插件开发文档&#xff0c;照着官方示例写完第一个HelloWorld插件&#xff0c;一编译——java.lang.UnsupportedClassVersionError…...

智慧无人机巡检-无人机可见光红外数据集 无人机多模态检测数据集 红外与可见光检测数据集

智慧无人机巡检-无人机可见光红外数据集&#xff0c;已完成标注&#xff0c;可导出各种常用数据集&#xff0c;yolo&#xff0c;voc&#xff0c;coco等格式。可见光33000张&#xff0c;红外16100张&#xff0c;目标一张一个 无人机可见光红外目标数据集项目详细信息数据集名称无…...

终极鼠标连点器使用指南:3分钟掌握高效自动化技巧

终极鼠标连点器使用指南&#xff1a;3分钟掌握高效自动化技巧 【免费下载链接】MouseClick &#x1f5b1;️ MouseClick &#x1f5b1;️ 是一款功能强大的鼠标连点器和管理工具&#xff0c;采用 QT Widget 开发 &#xff0c;具备跨平台兼容性 。软件界面美观 &#xff0c;操作…...

DeepSeek-R1补全能力封测倒计时(仅剩72小时开放API灰度权限):这份内部测试SOP已被3家头部科技公司紧急采购

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek-R1代码补全能力封测全景概览 DeepSeek-R1 是深度求索&#xff08;DeepSeek&#xff09;推出的高性能开源推理模型&#xff0c;在代码补全场景中展现出显著的上下文理解力与多语言泛化能力。本…...

Airtest Poco实战:5分钟搞定微信小程序自动化测试环境搭建与元素抓取

Airtest Poco实战&#xff1a;5分钟搞定微信小程序自动化测试环境搭建与元素抓取微信小程序作为轻量级应用的代表&#xff0c;已经渗透到电商、社交、工具等各个领域。随着小程序功能的日益复杂&#xff0c;自动化测试成为保障产品质量的重要手段。本文将带你快速搭建微信小程序…...

终极Node.js Mock工具:Mockery入门到精通实战教程

终极Node.js Mock工具&#xff1a;Mockery入门到精通实战教程 【免费下载链接】mockery Simplifying the use of mocks with Node.js 项目地址: https://gitcode.com/gh_mirrors/mock/mockery Mockery是Node.js生态中简化Mock使用的终极工具&#xff0c;它为开发者提供了…...

NanaZip:现代Windows文件压缩问题的终极解决方案

NanaZip&#xff1a;现代Windows文件压缩问题的终极解决方案 【免费下载链接】NanaZip The 7-Zip derivative intended for the modern Windows experience 项目地址: https://gitcode.com/gh_mirrors/na/NanaZip 还在为Windows文件压缩工具界面老旧、功能单一而烦恼吗&…...