线段树和树状数组

实战演练

1.【模板】树状数【模板】树状数组1

输入:

5 5
1 5 4 2 3
2 2 4
1 2 3 2
2 3 4
1 1 5 1
2 1 4

注意:只修改一个数(单点修改),却要输出一个区间的值(区间查询)!!!

解法一:线段树

#include<bits/stdc++.h>                    //线段树
using namespace std;
const int N = 5e5+5;
int n,m,ans;
int he=0;
int input[N];
struct node {                    //结构体,left,right表示input[left]~input[right]的范围,从left开始,到right结束,tree.num表示他们之间的和int left,right;int num;
} tree[2000010];
void build(int left,int right,int index) {  //创建线段树he++;tree[index].left=left;tree[index].right=right;if(left==right)return ;int mid=(right+left)/2;build(left,mid,index*2);build(mid+1,right,index*2+1);
}
int add(int index) {              //输入时候的tree数组,tree[i]=tree[2*i]+tree[2*i+1]if(tree[index].left==tree[index].right) {//cout<<index<<" "<<input[tree[index].right]<<endl;   //验证tree[index].num=input[tree[index].right];return tree[index].num;}tree[index].num=add(index*2)+add(index*2+1);return tree[index].num;
}
void my_plus(int index,int dis,int k) {        //区间修改tree[index].num+=k;if(tree[index].left==tree[index].right)return ;if(dis<=tree[index*2].right)my_plus(index*2,dis,k);if(dis>=tree[index*2+1].left)my_plus(index*2+1,dis,k);
}
void search(int index,int l,int r) {    //计算数组input数组l到r的和//cout<<index<<" ";if(tree[index].left>=l && tree[index].right<=r) {ans+=tree[index].num;return ;}if(tree[index*2].right>=l)search(index*2,l,r);if(tree[index*2+1].left<=r)search(index*2+1,l,r);
}
int main() {cin>>n>>m;for(int i=1; i<=n; i++)cin>>input[i];build(1,n,1);add(1);for(int i=1; i<=m; i++) {int a,b,c;scanf("%d%d%d",&a,&b,&c);if(a==1) {my_plus(1,b,c);} else {ans=0;search(1,b,c);printf("%d\n",ans);}}return 0;
}

解法二:树状数组

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

注意:只修改一个区间(区间修改),却只要输出一个位置的值(单点查询)!!!

方法一:线段树

方法二:树状数组

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

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

相关文章

FreeRTOS学习 -- 再识

工作中一直使用FreeRTOS进行着开发&#xff0c;但是没有进行过系统的总结过。现在将快速使用几天时间将FreeRTOS相关知识点加以总结。 官网&#xff1a; https://www.freertos.org/zh-cn-cmn-s/ 参看资料&#xff1a; 正点原子 STM32F1 FreeRTOS开发手册_V1.2.pdf The FreeRTOS…

LangChain入门:15.Sequential Chain:顺序链的使用

Sequential Chain是LangChain库中的一个强大工具&#xff0c;它允许我们将多个LLMChain按照特定的顺序连接起来&#xff0c;形成一个处理流程。这种链式结构使得我们可以将一个大任务分解为几个小任务&#xff0c;并依次执行&#xff0c;每个任务的输出成为下一个任务的输入。 …

linux:du和df区别

文章目录 1. 概述2. du 命令2. df 命令3. 区别总结 1. 概述 du 和 df 都是 Linux 系统中用于查看磁盘空间使用情况的命令&#xff0c;但它们的功能和用法有所不同。 2. du 命令 du 是 “disk usage” 的缩写&#xff0c;用于显示文件或目录的磁盘使用情况。du 命令用于查看指…

如何用matplotlib画图像的时候使用中文标签名

Matplotlib 中文显示不是特别友好&#xff0c;要在 Matplotlib 中显示中文&#xff0c;我们可以通过两个方法&#xff1a; 下载使用支持中文的字体库。设置 Matplotlib 的字体参数。 下载使用支持中文的字体库: Matplotlib 默认情况不支持中文&#xff0c;我们可以使用以下简…

Disk Drill Enterprise for Mac v5.5.1515数据恢复软件中文版

Disk Drill 是 Mac 操作系统固有的Mac数据恢复软件&#xff1a;使用 Recovery Vault 轻松保护文件免遭意外删除&#xff0c;并从 Mac 磁盘恢复丢失的数据。支持大多数存储设备&#xff0c;文件类型和文件系统。 软件下载&#xff1a;Disk Drill Enterprise for Mac v5.5.1515激…

博士推荐 | 拥有超过10年的数据解决方案经验,数据驱动的决策者

编辑 / 木子 审核 / 朝阳 伟骅英才 伟骅英才致力于以大数据、区块链、AI人工智能等前沿技术打造开放的人力资本生态&#xff0c;用科技解决职业领域问题&#xff0c;提升行业数字化服务水平&#xff0c;提供创新型的产业与人才一体化服务的人力资源解决方案和示范平台&#x…

jupyter python paramiko 网络系统运维

概述 通过使用jupyter进行网络运维的相关测试 设备为H3C 联通性测试 import paramiko import time import getpass import re import os import datetimeusername "*****" password "*****" ip "10.32.**.**"ssh_client paramiko.SSHCli…

【明道云】设置默认值时,发现单选项目无法与文本项目比较

【背景】 新建表单&#xff0c;其中字段B的默认值通过使用字段A在另一张表单B中搜索获得。 字段A在当前表的填写形式是下拉框&#xff0c;而用于比较的表单B的相应字段A1则是文本。因此在建立条件时发现由于组件类型不同&#xff0c;无法选到字段A作为比较条件。 【解决办法】…

基于Difussion图像、视频生成综述

2024年大年初七&#xff08;02.16&#xff09;OpenAI 发布视频生成模型 Sora 在各大平台转疯了&#xff0c;和2022年发布ChatGPT3.5时一样的疯狂。在开工第一天&#xff0c;我就去官网上看了 Sora 的技术报告&#xff0c;遗憾的是&#xff0c;在这份技术报告中只披露了一些模型…

rsync+inotify的实时同步

目录 一、inotify 二、rsyncinotify实时同步搭建 1. 实验环境配置 2. 配置 服务端192.168.91.103 1. 修改rsync源服务器配置文件 3. 配置 客户端192.168.91.102 1. 创建文件夹 ​编辑 2. 调整 inotify 内核参数 3. 安装inotify-tools 4. inotify对文件进行监控 5. 测…

新手创业三大法则!2024创业赚钱项目 2024做什么行业前景好!2024适合普通人创业的项目!

第一、寻找痛点。成功的创业项目往往解决了某个现实生活中的痛点。作为新手小白&#xff0c;需要关注自己周围的人们所遇到的问题&#xff0c;并思考通过何种方式来解决这些问题。这样做不仅能提供实际需求&#xff0c;还能使创业项目更有长期性。只有真正了解人们的需求和痛点…

蓝桥杯练习笔记(十八)

蓝桥杯练习笔记&#xff08;十八&#xff09; 一、用辅助栈来优化递归深度过大的问题 输入示例 0000100010000001101010101001001100000011 0101111001111101110111100000101010011111 1000010000011101010110000000001011010100 0110101010110000000101100100000101001001 0…