【蓝桥杯每日一题】推导部分和——带权并查集

推导部分和

2024-12-11 蓝桥杯每日一题 推导部分和 带权并查集

题目大意

对于一个长度为 ( N ) 的整数数列 ( A 1 , A 2 , ⋯ , A N A_1, A_2, \cdots, A_N A1,A2,,AN ),小蓝想知道下标 ( l ) 到 ( r ) 的部分和 ∑ i = l r A i = A l + A l + 1 + ⋯ + A r \sum_{i=l}^r A_i = A_l + A_{l+1} + \cdots + A_r i=lrAi=Al+Al+1++Ar 是多少?

然而,小蓝并不知道数列中每个数的值是多少,他只知道它的 ( M ) 个部分和的值。其中第 ( i ) 个部分和是下标 ( $l_i $) 到 ( $r_i KaTeX parse error: Can't use function '\)' in math mode at position 1: \̲)̲ 的部分和 \(\sum_{j=l_i}^{r_i} A_j = A_{l_i} + A_{l_i+1} + \cdots + A_{r_i}$,值是 $ S_i $。

解题思路

这个题的思维难度有点大,但是实现来很容易,只要理解带权并查集这一概念即可。

先看这个权值是怎么带上的,d 数组就是代表每一个值到根节点的一个距离,然而当 l 和 r在同一个连通块中的时候,之间的距离就是 d[r] - d[l-1] 的值。

每一个连通块代表着是那些可以通过边界值相连的区间的总和,在合并的过程中会发生如下图的数值变化,如图所示 d[l-1] 的值将会在find函数中通过更新父节点的时候更新成 l-1 到 根节点的距离,这时候显然l 和 r 之间的距离就是d[r] - d[l-1]

在这里插入图片描述

Accepted
#include <iostream>using namespace std;const int N = 100010;
typedef long long ll;
ll n,m,q;
ll d[N],p[N];ll find(int x) {if(p[x] != x) {int t = find(p[x]);d[x] += d[p[x]];p[x] = t;}return p[x];
}int main() {cin>>n>>m>>q;for(int i = 1;i <= n;i++) p[i] = i;ll l,r,s;while(m--) {cin>>l>>r>>s;ll pl = find(l-1),pr = find(r);// 直接合并p[pl] = pr;d[pl] = d[r] - d[l-1] - s;}while(q--) {cin>>l>>r;ll pl = find(l-1),pr = find(r);if(pl != pr) cout<<"UNKNOWN"<<endl;else cout<<d[r] - d[l-1]<<endl;}return 0;
}
思考

这个题的思维难度确实高,主要就是带权并查集的使用,得多想想。

备注

想要一起备赛的同学可以评论区留言!!!

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

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

相关文章

<项目代码>YOLOv8 车牌识别<目标检测>

项目代码下载链接 &#xff1c;项目代码&#xff1e;YOLOv8 车牌识别&#xff1c;目标检测&#xff1e;https://download.csdn.net/download/qq_53332949/90121387YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题…

STM32 CubeMx HAL库 独立看门狗IWDG配置使用

看门狗这里我就不多介绍了&#xff0c;能搜到这篇文章说明你了解 总之就是一个单片机重启程序&#xff0c;设定好超时时间&#xff0c;在超时时间内没有喂狗&#xff0c;单片机就会复位 主要应用在单片机异常重启方面&#xff0c;比如程序跑飞&#xff08;注意程序跑飞时你就…

实现某海外大型车企(T)Cabin Wi-Fi 需求的概述

最近参与某海外大型车企&#xff08;T&#xff09;的 Wi-Fi 功能需求开发&#xff0c;T 提出了一个 Cabin Wi-Fi 的概念&#xff0c;首先我们先对 Cabin Wi-Fi 进行一个较全面的了解。 1. Cabin Wi-Fi 概念概述 Cabin Wi-Fi 通常指用于飞机客舱、火车车厢、豪华巴士或船舶上的无…

OpenAI直播发布第4天:ChatGPT Canvas全面升级,免费开放!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…

【Linux课程学习】:第二十一弹---深入理解信号(中断,信号,kill,abort,raise,larm函数)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;Linux课程学习 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 ​ Linux学习笔记&#xff1a; https://blog.csdn.…

2021 年 6 月青少年软编等考 C 语言四级真题解析

目录 T1. 数字三角形问题思路分析T2. 大盗思路分析T3. 最大子矩阵思路分析T4. 小球放盒子思路分析T1. 数字三角形问题 上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。 注…

购物车案例--分模块存储数据,发送请求数据渲染,底部总计数量和价格

shift鼠标右键&#xff0c;打开powershell&#xff0c;新建项目 自定义 只有一个页面&#xff0c;不涉及路由&#xff0c;勾选vuex,css,babel 无需保存预设 回车项目开始创建 项目用vscode打开 将src里的内容全部清空 将第七天的课程准备代码复制粘贴到src中 刷新页面&…

内网是如何访问到互联网的(华为源NAT)

私网地址如何能够访问到公网的&#xff1f; 在上一篇中&#xff0c;我们用任意一个内网的终端都能访问到百度的服务器&#xff0c;但是这是我们在互联网设备上面做了回程路由才实现的&#xff0c;在实际中&#xff0c;之前也说过运营商是不会写任何路由过来的&#xff0c;那对于…

C++编程: 基于cpp-httplib和nlohmann/json实现简单的HTTP Server

文章目录 0. 引言1. 完整实例代码2. 关键实现3. 运行与测试 0. 引言 本文基于 cpp-httplib 和 nlohmann/json 实现简单的 HTTPS Server 实例代码&#xff0c;这两个库均是head-only的。 1. 完整实例代码 如下实例程序修改自example/server.cc #include <httplib.h>#i…

收银pos源代码(Win版+安卓版)

1.收银pos版本 支持市面上主流系统版本&#xff0c;如支持win版&#xff08;exe安装包&#xff09;、安卓版&#xff08;apk安装包&#xff09;&#xff1b; 2.多样化收银 支持Windows收银机、安卓收银机、ai智能称重、收银称重一体机、无人自助收银、手机端收银等&#xff…

springboot项目如何运行起来

时常开发好的springboot项目是如何运行起来的&#xff1f; 经常会使用到打包插件spring-boot-maven-plugin SpringBoot提供了一个插件spring-boot-maven-plugin用于把程序打包成一个可执行的jar包。在pom文件里加入这个插件即可&#xff1a; org.springframework.boot spring-b…

ubuntu18.04配置实时内核

ubuntu系统&#xff1a;18.04 当前内核&#xff1a;5.4.0-84-generic 待安装实时内核&#xff1a; 5.6.19-rt11 1、查看当前版本 uname -r 2、下载内核与补丁 一种方式从官网自己下载 官方内核下载地址官方补丁下载地址阿里镜像内核下载地址&#xff08;速度快&#xff0…

Centos7环境下安装Flink1.20

目录 介绍1、涉及安装包2、节点3、修改hostname4、将flink安装包上传并解压5、修改配置文件6、修改masters和workers&#xff08;所有节点&#xff09;7、集群启停 介绍 Flink 是一个分布式系统&#xff0c;需要有效分配和管理计算资源才能执行流应用程序。它集成了所有常见的…

EXCEL数据清洗的几个功能总结备忘

目录 0 参考教材 1 用EXCEL进行数据清洗的几个功能 2 删除重复值&#xff1a; 3 找到缺失值等 4 大小写转换 5 类型转化 6 识别空格 0 参考教材 精通EXCEL数据统计与分析&#xff0c;中国&#xff0c;李宗璋用EXCEL学统计学&#xff0c;日EXCEL统计分析与决策&#x…

深入解析Vue3响应式系统:从Proxy实现到依赖收集的核心原理

深入解析Vue3响应式系统&#xff1a;从Proxy实现到依赖收集的核心原理 响应式系统的基本原理 作为一个热门的JavaScript框架&#xff0c;Vue在3.x版本中引入了基于Proxy的响应式系统。这个系统的核心思想是利用Proxy对象拦截对数据的访问和修改&#xff0c;从而实现数据的自动更…

Visual Studio 2022 安装和管理 GitHub Copilot

文章目录 前言一、&#x1f6e0;️安装 GitHub Copilot1.1 安装 GitHub Copilot Chat1.2 使用 Visual Studio 安装程序进行安装1.3 使用“管理扩展”对话框进行安装&#xff08;推荐&#xff09; 二、&#x1f3ad;管理 Copilot 状态2.1 Copilot 处于活动状态2.2 Copilot 处于非…

git企业的使用详细命令行操作

git是Linux创始人通过内核开发而创作的分布式版本的控制系统&#xff0c;而我们作为开发者需要开发与维护&#xff0c;避免不了版本的迭代和更新&#xff0c;git就是用来保存修改删除等操作的工具&#xff0c;可以记录代码改动情况&#xff0c;它能够保存代码的每个版本&#x…

高中数学:随机变量-二项分布与超几何分布(独立重复实验)

文章目录 一、二项分布伯努利实验概率公式均值与方差公式归纳例题 二、超几何分布定义均值例题 一、二项分布 伯努利实验 概率公式 补充&#xff1a;二项式定理 均值与方差公式 归纳 例题 二、超几何分布 定义 均值 证明 例题

【Leetcode】滑动窗口算法-编程苍穹下划破数据暗夜的高效光弧

前言 &#x1f31f;&#x1f31f;本期讲解关于滑动窗口问题~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么废话不多说直接…

go-zero(十二)消息队列

go zero 消息队列 在微服务架构中&#xff0c;消息队列主要通过异步通信实现服务间的解耦&#xff0c;使得各个服务可以独立发展和扩展。 go-zero中使用的队列组件go-queue&#xff0c;是gozero官方实现的基于Kafka和Beanstalkd 的消息队列框架,我们使用kafka作为演示。 一、…