区间修改,单点查询(模板)(差分构建)
区间修改单点查询模板问题描述给定一个长度为 nn 的序列 aa你需要进行 mm 次操作每次操作为以下两种之一1 l r x将 al∼ral∼r​ 的所有数字增加 xx。2 idx输出当前 aidxaidx​ 的值。输入格式第一行输入两个正整数 n,mn,m。(1≤n,m≤2×105)(1≤n,m≤2×105)第二行输入 nn 个正整数 aiai​。(1≤ai≤104)(1≤ai​≤104)接下来 mm 行每行输入代表一种操作。1 l r x将 al∼ral∼r​ 的所有数字增加 xx。2 idx输出当前 aidxaidx​ 的值。(1≤l≤r≤n,1≤x≤103,1≤idx≤n)(1≤l≤r≤n,1≤x≤103,1≤idx≤n)输出格式对于每次操作 22输出对应的答案。样例输入3 2 1 2 3 1 1 3 1 2 2样例输出3树状数组实现import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.*; public class Main { static int N2*100010; static long c[]new long[N];//树状数组 static int a[]new int[N]; static int n; static BufferedReader br new BufferedReader(new InputStreamReader(System.in)); static BufferedWriter bwnew BufferedWriter(new OutputStreamWriter(System.out)); public static void main(String[] args) throws IOException { StringTokenizer stnew StringTokenizer(br.readLine()); nInteger.parseInt(st.nextToken()); int mInteger.parseInt(st.nextToken()); stnew StringTokenizer(br.readLine()); for (int i 1; i n; i) { a[i]Integer.parseInt(st.nextToken()); } for (int i 1; i n; i) { add(i,a[i]-a[i-1]); } //我们可以对原数组的差分数组维护一个树状数组 这样区间修改两个单点修改 //单点查询就变成了区间查询 for (int i 0; i m; i) { stnew StringTokenizer(br.readLine()); int opeInteger.parseInt(st.nextToken()); if(ope1){ int lInteger.parseInt(st.nextToken()),rInteger.parseInt(st.nextToken()),xInteger.parseInt(st.nextToken()); add(l,x); add(r1,-x); }else{ int idxInteger.parseInt(st.nextToken()); bw.write(query(idx)\n); } } br.close(); bw.flush(); bw.close(); } static int lowbit(int x){ return x-x; } static void add(int x,int k){ for (int i x; i n; ilowbit(i)) { c[i]k; } } static int query(int x){ int sum0; for (int i x; i 0; i-lowbit(i)) { sumc[i]; } return sum; } }线段树实现import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.*; public class Main { static int N2*100010; static int tree[]new int[4*N];//线段树 static int a[]new int[N]; static int n; static BufferedReader br new BufferedReader(new InputStreamReader(System.in)); static BufferedWriter bwnew BufferedWriter(new OutputStreamWriter(System.out)); public static void main(String[] args) throws IOException { StringTokenizer stnew StringTokenizer(br.readLine()); nInteger.parseInt(st.nextToken()); int mInteger.parseInt(st.nextToken()); stnew StringTokenizer(br.readLine()); for (int i 1; i n; i) { a[i]Integer.parseInt(st.nextToken()); } for (int i 1; i n; i) { add(1,1,n,i,a[i]-a[i-1]); } //我们可以对原数组的差分数组维护一个线段树 这样区间修改两个单点修改 //单点查询就变成了区间查询 for (int i 0; i m; i) { stnew StringTokenizer(br.readLine()); int opeInteger.parseInt(st.nextToken()); if(ope1){ int lInteger.parseInt(st.nextToken()),rInteger.parseInt(st.nextToken()),xInteger.parseInt(st.nextToken()); add(1,1,n,l,x); if(r1n)add(1,1,n,r1,-x);//注意加判断语句 }else{ int idxInteger.parseInt(st.nextToken()); bw.write(query(1,1,n,1,idx)\n); } } br.close(); bw.flush(); bw.close(); } static int query(int id,int l,int r,int x,int y){ if(lx ry){ return tree[id]; } int mid(lr)1; int res0; if(xmid)resquery(2*id, l, mid, x, y); if(ymid1)resquery(2*id1, mid1, r, x, y); return res; } static void add(int id,int l,int r,int x,int k){ if(lr){ tree[id]k; return; } int mid(lr)1; if(xmid)add(2*id, l, mid, x, k); else add(2*id1, mid1, r, x, k); pushup(id); } static void pushup(int id){ tree[id]tree[2*id]tree[2*id1]; } }

相关新闻

PDF-XSS漏洞解析:从JavaScript注入到沙箱逃逸的攻防实战

PDF-XSS漏洞解析:从JavaScript注入到沙箱逃逸的攻防实战

1. 项目概述:当PDF不再是“安全文档”在大多数人的印象里,PDF文件就像一个数字化的“打印件”,格式固定、内容稳定,是传递合同、报告、电子书等正式文档的理想载体。这种“所见即所得”的特性,加上Adobe Reader等阅读器…

2026/7/10 5:31:06阅读更多 →
Boss-Key:3秒隐藏窗口,打造你的数字隐私安全区

Boss-Key:3秒隐藏窗口,打造你的数字隐私安全区

Boss-Key:3秒隐藏窗口,打造你的数字隐私安全区 【免费下载链接】Boss-Key 老板来了?快用Boss-Key老板键一键隐藏静音当前窗口!上班摸鱼必备神器 项目地址: https://gitcode.com/gh_mirrors/bo/Boss-Key 你是否曾在办公室浏…

2026/7/10 5:31:06阅读更多 →
Unity游戏开发中Lua表性能优化与多线程安全实践

Unity游戏开发中Lua表性能优化与多线程安全实践

1. 项目概述:当Lua在Unity中遇上多线程在Unity游戏开发中,Lua作为热更新方案的核心脚本语言,其灵活性和动态性为我们带来了巨大的便利。然而,随着项目规模的扩大和性能要求的提升,尤其是在追求更高帧率、更复杂逻辑的现…

2026/7/10 5:31:06阅读更多 →
Tessent IJTAG ICL 文件实战:从 RTL 网表提取到 3 类 Instrument 连接

Tessent IJTAG ICL 文件实战:从 RTL 网表提取到 3 类 Instrument 连接

Tessent IJTAG ICL 文件实战:从 RTL 网表提取到 3 类 Instrument 连接在芯片设计与验证领域,IEEE 1687(IJTAG)标准已经成为嵌入式测试与调试的重要框架。作为其核心组成部分,ICL(Instrument Connectivity L…

2026/7/10 6:46:11阅读更多 →
基于LangChain的AI Agent实战:从工作流引擎到股票分析师构建

基于LangChain的AI Agent实战:从工作流引擎到股票分析师构建

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 上周帮一个做金融数据分析的朋友看他们团队新上线的“智能助手”,发现一个很有意思的现象:他们花了不少力气&a…

2026/7/10 6:46:11阅读更多 →
Godot-MCP:基于MCP协议实现AI智能体与游戏引擎的深度集成

Godot-MCP:基于MCP协议实现AI智能体与游戏引擎的深度集成

1. 项目概述:当AI助手遇见Godot引擎 如果你是一名Godot开发者,或者对这款开源的2D/3D游戏引擎感兴趣,那么最近几个月你可能已经感受到了社区里一股新的热潮。这股热潮的核心,就是如何将大语言模型(LLM)的智…

2026/7/10 6:46:11阅读更多 →
1款PDF骑缝章批量标注工具,打工人必备神器!

1款PDF骑缝章批量标注工具,打工人必备神器!

聊一聊无纸化办公,但文件还是需要盖章的。章现在也是电子版的。那文件正式件已经转成PDF。关键上级要求对文件加盖骑缝章。这个怎么办呢?有办法,请往下看。软件介绍PDF骑缝章批量标注工具软件下框有说明,可以看下。软件只需要几步…

2026/7/10 6:46:11阅读更多 →
STM32G431六步换相无刷电机驱动:从原理图到代码实战

STM32G431六步换相无刷电机驱动:从原理图到代码实战

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 最近在调试一个无刷电机项目时,遇到了一个让我印象深刻的场景:电机在低速运转时一切正常,但一旦提…

2026/7/10 6:46:11阅读更多 →
Kotlin 1.9 协程实战:3种挂起函数调度策略与性能对比分析

Kotlin 1.9 协程实战:3种挂起函数调度策略与性能对比分析

Kotlin 1.9 协程实战:3种挂起函数调度策略与性能对比分析在当今高并发的移动应用和后端服务开发中,Kotlin协程已成为处理异步任务的利器。随着Kotlin 1.9版本的发布,协程的性能和灵活性得到了进一步提升。本文将深入探讨三种核心调度策略——…

2026/7/10 6:41:10阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/9 5:56:19阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/9 9:45:20阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/10 4:59:05阅读更多 →
浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比

浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比

浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比当你在浏览器地址栏敲入一个网址时,背后可能隐藏着一场关于"要不要重新下载资源"的精密博弈。这场博弈的裁判是HTTP缓存机制,而304状态码则是这场博弈…

2026/7/10 0:00:01阅读更多 →
RoboWits:面向创造性问题求解的双臂机器人认知推理基准

RoboWits:面向创造性问题求解的双臂机器人认知推理基准

1. 项目概述:这不是又一个机器人抓取数据集,而是一次对“思考力”的压力测试 RoboWits——这个名字里藏着两个关键信号:“Robo”直指物理世界中的具身智能体,“Wits”则毫不掩饰地指向人类最核心的认知能力:机敏、判断…

2026/7/10 0:00:01阅读更多 →
5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能

5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能

5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI TegraRcmGUI是一款专为Windows…

2026/7/10 0:00:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/9 9:45:20阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/9 15:50:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/9 14:14:17阅读更多 →