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

推导部分和

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;
}
思考

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

备注

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

bug:uniapp运行到微信开发者工具 白屏 页面空白

1、没有报错信息 2、预览和真机调试都能正常显示&#xff0c;说明代码没错 3、微信开发者工具版本已经是win7能装的最高版本了&#xff0c;1.05版 链接 不打算回滚旧版本 4、解决&#xff1a;最后改调试基础库为2.25.4解决了&#xff0c;使用更高版本的都会报错&#xff0c;所…

嵌入式入门Day30

IO Day5 线程相关函数pthread_createpthread_selfpthread_exitpthread_join\pthread_detachpthread_cancelpthread_setcancelstatepthread_setcanceltype 作业 线程 线程是轻量化的进程&#xff0c;一个进程内可以有多个线程&#xff0c;至少包含一个线程&#xff08;主线程&a…

Maven学习(Maven项目模块化。模块间“继承“机制。父(工程),子项目(模块)间聚合)

目录 一、Maven项目模块化&#xff1f; &#xff08;1&#xff09;基本介绍。 &#xff08;2&#xff09;汽车模块化生产再聚合组装。 &#xff08;3&#xff09;Maven项目模块化图解。 1、maven_parent。 2、maven_pojo。 3、maven_dao。 4、maven_service。 5、maven_web。 6…

ERC论文阅读(03)--instructERC论文阅读笔记(2024-12-14)

instructERC论文阅读笔记 2024-12-14 论文题目&#xff1a;InstructERC: Reforming Emotion Recognition in Conversation with Multi-task Retrieval-Augmented Large Language Models 说明&#xff1a;以下内容纯属本人看论文及复现代码的记录&#xff0c;如想了解论文细节&…

《Java核心技术I》Swing用户界面组件

Swing和模型-视图-控制器设计模式 用户界面组件各个组成部分&#xff0c;如按钮&#xff0c;复选框&#xff0c;文本框或复杂的树控件&#xff0c;每个组件都有三个特征&#xff1a; 内容&#xff0c;如按钮的状态&#xff0c;文本域中的文本。外观&#xff0c;颜色&#xff0c…

ubuntu20.04+ROS Noetic 安装PX4+Mavros

文章目录 系统环境安装依赖PX4 安装老版本安装测试环境变量添加版本查看 安装MAVROS&#xff08;二进制安装非源码安装&#xff09;测试 OGC 地面站安装测试mavros与sitl通信参考 系统环境 ubuntu 20.04 ROS Noetic 如果系统安装了Anaconda等虚拟环境管理器&#xff0c;要退出…

IIS服务器部署C# WebApi程序,客户端PUT,DELETE请求无法执行

这两天在自己Windows10电脑上搭建IIS服务器&#xff0c;把自己写的WebApi代码部署上做个本地服务器&#xff0c;结果客户端的PUT和DELETE请求无法执行&#xff0c;GET、POST这些都正常&#xff0c;研究后发现要删除IIS中的“模块”中的"webdavmodule"才能解决。

基于SpringBoot的嗨玩旅游网站:一站式旅游信息服务平台的设计与实现

摘要 在旅游需求日益增长的今天&#xff0c;一个全面、便捷的旅游信息服务平台显得尤为重要。嗨玩旅游网站正是为了满足这一需求而设计的在线平台&#xff0c;它提供了包括景点信息、旅游线路、商品信息、社区信息和活动推广等在内的丰富旅游目的地信息&#xff0c;旨在帮助用…

HDR视频技术之七:逆色调映射

HDR 技术近年来发展迅猛&#xff0c;在未来将会成为图像与视频领域的主流。当前 HDR 内容非常短缺&#xff0c;限制了 HDR 视听节目的广泛应用。逆色调映射(Inverse Tone Mapping)应运而生&#xff0c;它是一种用来将 SDR 源信号转换为 HDR 源信号的技术&#xff0c;可以应用于…

EXCEL的各种图形,统计图形

目录 0 EXCEL的各种图形&#xff0c;统计图形 1 统计图形 / 直方图 / 其实叫 频度图 hist最合适(用原始数据直接作图) 1.1 什么是频度图 1.2 如何创建频度图&#xff0c;一般是只选中1列数据&#xff08;1个数组&#xff09; 1.3 如何修改频度图的宽度 1.4 hist图的一个特…

AI 智能名片 S2B2C 商城小程序在社群团购运营中的作用与价值

摘要&#xff1a;本文深入探讨了 AI 智能名片 S2B2C 商城小程序在社群团购运营中的重要作用。随着社群团购的兴起&#xff0c;如何有效运营成为关键问题。AI 智能名片 S2B2C 商城小程序凭借其独特功能&#xff0c;能够在促进消费者互动、提升产品传播效果、影响购买决策以及实现…

【0x000A】HCI_Reject_Connection_Request命令详解

目录 一、命令概述 二、命令格式及参数说明 2.1. HCI_Reject_Connection_Request命令格式 2.2. 参数说明 2.2.1. BD_ADDR&#xff08;蓝牙设备地址&#xff09; 2.2.2. Reason&#xff08;拒绝原因&#xff09; 三、返回事件及参数说明 3.1. 返回参数 3.2. 生成的事件…

Ant Design of Vue之带select控件,单元格编辑功能的表格EditableCell组件

效果图 功能 表格里面某一行或者某一个单元格支持select复选框可以编辑&#xff0c;新增一行数据&#xff0c;删除一行数据&#xff0c;并且有校验规则 源码 editablecell组件源码 参考自 源码

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

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

景联文科技提供高质量文本标注服务,驱动AI技术发展

文本标注是指在原始文本数据上添加标签的过程&#xff0c;这些标签可以用来指示特定的实体、关系、事件等信息&#xff0c;以帮助计算机理解和处理这些数据。 文本标注是自然语言处理&#xff08;NLP&#xff09;领域的一个重要环节&#xff0c;它通过为文本的不同部分提供具体…

基于nginx和ffmpeg搭建HTTP FLV流媒体服务器

一、简介 整体是使用nginx搭建HTTP FLV流媒体服务器&#xff1a; 流程&#xff1a;音视频->rtmp->http-flv 音视频转为rtmp需要借助ffmpeg转化。 rtmp转为http-flv需要借助nginx转化。 nginx-http-flv-module是基于nginx-rtmp-module开发的&#xff0c;包含nginx-rt…

01-51单片机硬件基础

开发板介绍 学校授课用的是普中科技的EM3.V2.2开发板&#xff0c;没什么好说的&#xff0c;记着去淘宝上找原理图&#xff0c;别迷信课本。 网上有卖51最小系统板的&#xff0c;比开发板便宜&#xff0c;也有下载模块&#xff0c;可以自己搭建外围电路。 还可以自己在protue…

使用 Database Tools 实现高效数据查询的十大 IntelliJ IDEA 快捷键

得益于 IntelliJ IDEA Ultimate 的 Database Tools&#xff08;数据库工具&#xff09;中的专用 SQL 查询控制台&#xff0c;您无需离开 IDE 即可轻松修改连接到您的 Java 应用程序的任何数据库中的数据&#xff0c;以及从这些数据库中提取数据。 查询控制台具有 SQL 语句特定的…

【新人系列】Python 入门(十六):正则表达式

✍ 个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4dd; 专栏地址&#xff1a;https://blog.csdn.net/newin2020/category_12801353.html &#x1f4e3; 专栏定位&#xff1a;为 0 基础刚入门 Python 的小伙伴提供详细的讲解&#xff0c;也欢迎大佬们…

资料分析题

1、截位除 差距10% 以内 差距小 否则 差距大 2、基期与现期 3、同比与环比