[蓝桥杯学习] 树状树组

lowbit操作

数字二进制表达中的最低位1以及后面所有的0,函数写法如下:

int lowbit(int x){return x&-x;}

例如说,lowbit(0101100100) = (100)

lowbit(4) = 4  lowbit(6) = 2  

时间复杂度o(1)

树状数组

应用

进行单点修改和区间查询,时间复杂度为O(logn)

结构

进行单点修改

修改t[i],然后 i=i+lowbit(i) ,修改t[i] 

进行区间查询

查询区间和,就拆分成求前缀和,求(a,b),就拆成(1,b)-(1,a-1)

i=i-lowbit(i)

修改和查询函数的代码

注意,一定是 >0

例题

愉悦值的计算就是求区间和

有两个操作,修改和查询,使用树状数组的数据结构。

#include <iostream>
using namespace std;const int N = 1e7;
using ll = long long;
ll a[N],t[N];
int n;int lowbit(int x) {return x&-x;}void update(int k,ll x)
{a[k] += x;for(int i = k ; i <= n ;i += lowbit(i)) t[i] += x;
}ll getprefix(int k)
{ll res = 0;for(int i = k ; i > 0 ; i -= lowbit(i)) res += t[i];return res;
}ll getsum(int l,int r)
{return getprefix(r) - getprefix(l-1);
}ll oper(int k,int n)
{return (2*k-n-1)*a[k]-getsum(1,k-1)+getsum(k+1,n);
}int main()
{// 请在此输入您的代码int m;cin >> n >> m;for(int i = 1 ; i <= n ; i++) {ll x;cin >> x;update(i,x);}while(m--){int op;cin >> op;if(op == 1){int x;ll z;cin >> x;cin >> z;update(x,z-a[x]);}else {int x;cin >> x;cout << oper(x,n) << '\n';}}return 0;
}

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

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

相关文章

Hadoop集群三节点搭建(二)

一、克隆三台主机&#xff08;hadoop102 hadoop103 hadoop104&#xff09; 以master为样板机克隆三台出来&#xff0c;克隆前先把master关机 按照上面的步骤克隆其他两个就可以了&#xff0c;记得修改ip和hostname 二、编写集群同步脚本 在/home/attest/ 创建bin目录&…

Conda所有的指令说明

基本指令&#xff1a; conda info&#xff1a;显示有关Conda环境的信息。conda list&#xff1a;列出当前环境中安装的包。conda install&#xff1a;安装一个或多个包到当前环境中。conda uninstall&#xff1a;卸载一个或多个包从当前环境中。conda update&#xff1a;更新一…

论文解读:A New CNN Building Block for Low-ResolutionImages and Small Objects

引言 之前通过stride和pooling这些下采样操作&#xff0c;但是这些操作都会或多或少丢失图像的信息&#xff0c;所以这不适用于具有低分辨率图像和小物体的更困难的任务上。像池化选择maxpooling或者是averagepooling、卷积的步长(太大的话会丢失信息)都是很头疼的问题&#x…

I.MX6ULL开发笔记(二)——硬件外设操作

0x01 点亮第一个RGB灯 在文章http://t.csdnimg.cn/EGWt9中有介绍Linux下文件目录&#xff0c;那么在Linux系统下&#xff0c;RGB灯也是一个设备&#xff0c;所以我们需要到/sys目录下去操作这个设备。 之后&#xff0c;我们进入到class目录&#xff0c;这里挂载着开发板上的外…

Qt qDebug基本的使用方法详解

目录 qDebug基本用法输出字符串输出变量值1输出变量值2支持流式输出输出十六进制去除双引号和空格调试输出级别 自定义类型输出自定义日志信息的输出格式示例占位符设置环境变量 关闭QDebug输出Qt工程VS工程 在VS工程中如何查看qDebug输出 DebugView下载 qDebug基本用法 qDebug…

大学生如何当一个程序员——第三篇:热门专业学习之路1

第三篇&#xff1a;热门专业学习之路1 1.JAVASE2.数据库3.网页设计和开发4.Servlet/ JSP和企业级项目开发5.SSM框架&#xff08;Spring、Spring MVC、Mybatis&#xff09;6.各种JAVA新技术和大型项目的整合7.微服务架构8.一定要做一个大项目&#xff01; 各位小伙伴想要博客相关…

Python如何实现微信支付功能代码示例

微信支付是一种基于互联网的移动支付服务&#xff0c;由中国的即时通讯工具微信提供。用户可以通过微信支付在微信平台上进行在线支付、转账和收款。微信支付支持多种支付方式&#xff0c;包括银行卡支付、微信钱包余额支付、扫码支付等。用户可以用微信支付购买商品、支付账单…

SpringBoot Redis入门(一)——redis、Lettuce、Redisson使用

本章&#xff1a;将展示SpringBoot集成Redis三种客户端的配置要点和常见应用示例&#xff1b;下章&#xff1a;自行实现一个方法级的缓存注解&#xff0c;简化版的Cacheable&#xff0c;使初学者加深对Spring缓存框架的理解。 一、Lettuce客户端 Lettuce 是一种可扩展的、线程…

Ubuntun使用ISO镜像中的软件包作为本地镜像源

首先下载镜像&#xff1a; https://releases.ubuntu.com/jammy/ubuntu-22.04.3-desktop-amd64.iso 新建本地目录&#xff0c;挂载ISO文件到本地目录 sudo mkdir /media/cdrom sudo mount /mnt/e/iso/ubuntu-22.04.3-desktop-amd64.iso /media/cdrom # 备份镜像源 sudo mv…

Web前端篇——ElementUI的Backtop 不显示问题

在使用ElementUI的Backtop回到顶部组件时&#xff0c;单独复制这一行代码 <el-backtop :right"100" :bottom"100" /> 发现页面在向下滚动时&#xff0c;并未出现Backtop组件。 可从以下3个方向进行分析&#xff1a; 指定target属性&#xff0c;且…

Django文章标签推荐

当博客文章实现了标签后&#xff0c;可以用它们做很多有趣的事情。关于标签的更多内容&#xff0c;请看 Django集成第三方标签功能-CSDN博客 使用标签&#xff0c;我们可以很好地对博客文章进行分类。类似主题的帖子会有几个共同的标签。下一步将构建一个功能&#xff0c;以显…

pytest-yaml 测试平台-4.生成allure报告,报告反馈企业微信、钉钉、飞书通知

前言 定时任务执行完成后生成可视化allure报告&#xff0c;并把结果发到企业微信&#xff0c;钉钉&#xff0c;飞书通知群里。 生成allure报告 添加定时任务 执行完成后生成allure报告 查看报告详情 报告会显示详细的request 和 response 详细信息 也可以查看log日志 …

js中session、cookie、 localStorage和SessionStorage的区别和特点

在 JavaScript 中&#xff0c;session、cookie、localStorage 和 sessionStorage 是用于在客户端存储数据的不同机制。它们在以下几个方面有区别和特点&#xff1a; 1. 生命周期&#xff1a; - Session&#xff1a;session 存储在服务器端&#xff0c;通常使用会话标识符&a…

【胖虎的逆向之路】Android自制Https证书实现双向认证

Android自制Https证书实现双向认证 1.基本概念1.1 HTTP1.2 HTTPS1.3 加密方式1.3.1 对称加密1.3.2 非对称加密 1.4 SSL 功能1.4.1 客户对服务器的身份认证1.4.2 服务器对客户的身份认证1.4.3 建立服务器与客户之间安全的数据通道 1.5 CA 证书 2.证书生成2.1 生成根证书&#xf…

数据结构 模拟实现Queue队列(双链表模拟)

目录 一、队列的概念 二、队列的接口 三、队列的方法实现 &#xff08;1&#xff09;offer方法 &#xff08;2&#xff09;poll方法 &#xff08;3&#xff09;peek方法 &#xff08;4&#xff09;size方法 &#xff08;5&#xff09;isEmpty方法 四、最终代码 一、队…

域名转移:将腾讯云转移至阿里云

当时注册域名时&#xff0c;腾讯域云相对便宜&#xff0c;但目前阿里云在业界更加成熟&#xff0c;因此将自己申请的域名由阿里云转移至阿里云&#xff0c;并记录转移过程。 一、域名转出 进入腾讯云&#xff0c;登陆后选择控制台&#xff0c;选择我的资源–域名注册–全部域名…

快速入门学会tomcat!

快速入门学会tomcat&#xff01; 最新Tomcat下载安装详细教程Tomcat是什么&#xff1f;一、网络协议&#xff0f;网络协议包网络协议包&#xff1a; 二、Http网络协议包&#xff1a;三、Http网络协议包分类&#xff1a;1&#xff0e;Http请求协议包&#xff1a;2&#xff0e;Ht…

Android WiFi基础概览

Android WiFi 基础概览 1、WiFi协议2、Android WLAN 架构2.1 应用框架2.2 Wi-Fi 服务2.3 Wi-Fi HAL 3、相关编译 android13-release 1、WiFi协议 Wi-Fi&#xff08;无线通信技术&#xff09;_百度百科 2.4GHz 频段支持以下标准&#xff08;802.11b/g/n/ax&#xff09;&#xff…

科锐16位汇编学习笔记 04 乘除和移位指令

乘法和除法指令用的不多,因为效率很低 比较指令CMP (compare) •格式&#xff1a;CMP OPD&#xff0c;OPS •功能&#xff1a;(OPD) — (OPS),跟减法指令很像,但是不存结果 •说明&#xff1a;目的操作数减去源操作数&#xff0c;然后根据结果设置标志位&#xff0c;但该结…

作业三详解

作业3: 在作业1的基础上,整合修改、删除功能,可实现如下功能 1.进入新增页面,页面填入新增数据,提交表单,然后跳转到查询列表页面,列表页面显示所有记录(多一条新增的数据) 2.进入修改增页面,页面填入修改数据,提交表单,然后跳转到查询列表页面,列表页面显示所有…