区间带边权并查集,XY4060泄露的测试点

news2025/5/19 15:39:10

目录

一、题目

1、题目描述

2、输入输出

2.1输入

2.2输出

3、原题链接

二、解题报告

1、思路分析

2、复杂度

3、代码详解


 

一、题目

1、题目描述

2、输入输出

2.1输入

2.2输出

3、原题链接

码蹄集


 

二、解题报告

1、思路分析

关于带边权并查集:并查集,扩展域并查集,带边权并查集详解,OJ练习,详细代码-CSDN博客

sum(a[l, r]) = x 转化为 S[r] - S[l - 1] = x

其中S[i] = sum(a[1...i]),规定 S[0] = 0

考虑 带边权并查集维护 信息

f[i] 为 i 的父节点,d[i] 为 S[i] - S[f[i]]

对于find(x) 操作,如果 f[x] = x,那么直接返回x

否则递归查询 find(f[x]),回溯时 把d[x] 和 d[f[x]] 合并,即 d[x] += d[f[x]]

对于 [l, r, x],考虑如下情况:

l 和 r在同一集合,如果 d[l] - d[r] != x,说明无解

不在同一集合,取 fl 为 l所在集合的根节点,fr 为 r 所在集合根节点

那么考虑 fl 往 fr上合并,我们只需计算出 合并后的d[fl]

显然有 d[fl] = d[r] - d[l] - x

(因为 d[r] = S[r] - S[fr], d[l] = S[l] - S[fl], S[r] - S[l] = x)

处理完n条信息后,如果有合法解,那么0~m的根节点应该一样

此时S[i] = d[i] - d[0]

计算完S[i]后,可以根据 S[i] - S[i - 1] 计算原数组的值

2、复杂度

时间复杂度: O(NlogM)空间复杂度:O(M)

 

3、代码详解

 
#include <bits/stdc++.h>
using i64 = long long;

int main() {
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);

    int n, m;
    std::cin >> n >> m;

    std::vector<int> f(m + 1);
    std::vector<i64> d(m + 1, 0);
    std::iota(f.begin(), f.end(), 0);
    
    auto find = [&](auto &&self, int x) -> int {
        if (f[x] == x) return x;
        int px = self(self, f[x]);
        d[x] += d[f[x]];
        return f[x] = px;
    };

    for (int i = 0; i < n; ++ i) {
        int l, r, x;
        std::cin >> l >> r >> x;
        -- l;
        int fl = find(find, l);
        int fr = find(find, r);

        if (fl == fr) {
            if (d[r] - d[l] != x) {
                std::cout << "ovo\n";
                return 0;
            }
        } else {
            i64 s = d[r] - d[l] - x;
            f[fl] = fr;
            d[fl] = s;
        }
    }

    std::vector<int> S(n + 1);

    int top = find(find, 0);
    for (int i = 0; i <= m; ++ i) {
        if (find(find, i) != top) {
            std::cout << "ovo\n";
            return 0;
        }
        S[i] = d[i] - d[0];
    }

    for (int i = 1; i <= m; ++ i) {
        std::cout << S[i] - S[i - 1] << " \n"[i == m];
    }

    return 0;
}

 

 

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

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

相关文章

【数据结构】1-4算法的空间复杂度

数据结构知识点合集 知识点 空间复杂度的定义以及计算 空间复杂度--空间开销&#xff08;内存开销&#xff09;与问题规模 n 之间的关系 无论问题规模怎么变&#xff0c;算法运行所需的内存空间都是固定的常量&#xff0c;算法空间复杂度为S(n) O(1)&#xff0c;S 表示 “Spac…

OpenAI推出Codex — ChatGPT内置的软件工程Agents

OpenAI继续让ChatGPT对开发者更加实用。 几天前,他们增加了连接GitHub仓库的支持,可以"Deep Research"并根据你自己的代码提问。 今天,该公司在ChatGPT中推出了Codex的研究预览版,这是迄今为止最强大的AI编码Agent。 它可以编写代码、修复错误、运行测试,并在…

AI日报 · 2025年5月15日|GPT-4.1 登陆 ChatGPT

AI日报 2025年5月15日&#xff5c;GPT-4.1 登陆 ChatGPT 1、OpenAI 在 ChatGPT 全面开放 GPT-4.1 与 GPT-4.1 mini 北京时间 5 月 14 日晚&#xff0c;OpenAI 在官方 Release Notes 中宣布&#xff1a;专为复杂代码与精细指令场景打造的 GPT-4.1 正式加入 ChatGPT&#xff0…

W5500使用ioLibrary库创建TCP客户端

1、WIZnet全硬件TCP/IP协议栈 WIZnet全硬件TCP/IP协议栈,支持TCP,UDP,IPv4,ICMP,ARP,IGMP以及PPPoE协议。 以太网&#xff1a;支持BSD和WIZCHIP&#xff08;W5500/W5300/W5200/W5100/W5100S&#xff09;的SOCKET APIs驱动程序。 互联网&#xff1a; DHCP客户端 DNS客户端 FTP客…

组态王|如何创建组态王工程?

哈喽,你好啊,我是雷工! 组态王是比较普及的组态软件之一,大部分工控人应该都接触过组态王软件, 最近有个用组态王软件开发上位机,对设备进行集中控制的项目,边开发,顺便记录一些使用方法。 本篇从基础的如何创建组态王工程开始记录,以下为操作笔记。 1 、首先在工程…

mysql数据库-3(备份和恢复)

1. 冷备份和还原的实现 简介:冷备份定义是 读、写操作均不可进行,数据库停止服务 (超级简单) 冷备份 需求 对 10.0.0.13 主机实现冷备操作 关闭 10.0.0.13 主机的服务(ubuntu系统为例) 10.0.0.12为远程主机 systemctl stop mysql.service 备份数据 mkdir /data/…

估分啦~全国青少年信息素养大赛部分赛项已考完~图形化/算法创意实践

2025年全国青少年信息素养大赛-图形化编程挑战赛-小低组真题试卷 全国青少年信息素养大赛&#xff0c;图形化编程和算法创意实践挑战赛已考完&#xff0c;各位可以去题库重新做做下&#xff0c;复盘下&#xff0c;为更好的自己努力~ 配有答案和解析哦~ 2025年全国青少年信息素…

【Linux服务器】-虚拟机安装(CentOS7.9)

【Linux服务器】-虚拟机安装&#xff08;CentOS7.9&#xff09; 需提前准备好环境安装1. 创建新的虚拟机2. 选择默认配置&#xff0c;下一步3. 选择稍后指定操作系统&#xff0c;下一步4. 选择linux操作系统&#xff0c;并选择CentOS 7 64位 &#xff0c;下一步5. 分配磁盘空间…

2025年渗透测试面试题总结-百度面经(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 百度面经 百度安全工程师面试深度复盘与优化指南 一、项目经验反思与优化策略 二、技术问题深度解析 …

分别用 语言模型雏形N-Gram 和 文本表示BoW词袋 来实现文本情绪分类

语言模型的雏形 N-Gram 和简单文本表示 Bag-of-Words 语言表示模型简介 (1) Bag-of-Words (BoW) 是什么&#xff1f; *定义&#xff1a;将文本表示为词频向量&#xff0c;忽略词序和语法&#xff0c;仅记录每个词的出现次数。 **示例&#xff1a; 句子1&#xff1a;I love …

C#.NET 或 VB.NET Windows 窗体中的 DataGridView – 技巧、窍门和常见问题

DataGridView 控件是一个 Windows 窗体控件&#xff0c;它允许您自定义和编辑表格数据。它提供了许多属性、方法和事件来自定义其外观和行为。在本文中&#xff0c;我们将讨论一些常见问题及其解决方案。这些问题来自各种来源&#xff0c;包括一些新闻组、MSDN 网站以及一些由我…

PyTorch音频处理技术及应用研究:从特征提取到相似度分析

文章目录 音频处理技术及应用音频处理技术音视频摘要技术音频识别及应用 梅尔频率倒谱系数音频特征尔频率倒谱系数简介及参数提取过程音频处理快速傅里叶变换(FFT)能量谱处理离散余弦转换 练习案例&#xff1a;音频建模加载音频数据源波形变换的类型绘制波形频谱图波形Mu-Law 编…

VSTO(C#)Excel开发进阶2:操作图片 改变大小 滚动到可视区

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。 源码指引:github源码指引_初级代码游戏的博客-CSDN博客 入…

多用途商务,电子产品发布,科技架构,智能手表交互等发布PPT模版20套一组分享

产品发布类PPT模版20套一组&#xff1a;产品发布PPT模版https://pan.quark.cn/s/25c8517b0be3 第一套PPT模版是一个总结用的PPT封面&#xff0c;背景浅灰色&#xff0c;有绿色叶片和花朵装饰&#xff0c;深绿色标题&#xff0c;多个适用场景和占位符。突出其清新自然的设计和商…

WindowsPE文件格式入门11.资源表

https://www.bpsend.net/thread-411-1-1.html 资源表 资源的管理方式采用windows资源管理器目录的管理方式&#xff0c;一般有三层目录。根目录 结构体IMAGE_RESOURCE_DIRECTORY&#xff1a;描述名称资源和ID资源各自的数量&#xff0c;不描述文件。资源本质都是二进制数据&…

C语言标准I/O与Linux系统调用的文件操作

01. 标准库函数与系统调用对比 系统调用标准I/O库open/read/write/closefopen/fread/fwrite/fclose文件描述符(fd)文件指针(FILE*)无缓冲&#xff0c;直接系统调用自动缓冲管理每次操作触发系统调用减少系统调用次数<fcntl.h> <unistd.h><stdio.h> 系统调用…

【MYSQL】笔记

&#x1f4da; 博主的专栏 &#x1f427; Linux | &#x1f5a5;️ C | &#x1f4ca; 数据结构 | &#x1f4a1;C 算法 | &#x1f152; C 语言 | &#x1f310; 计算机网络 在ubuntu中&#xff0c;改配置文件&#xff1a; sudo nano /etc/mysql/mysql.conf.d/mysq…

线程池核心线程永续机制:从源码到实战的深度解析

简介 源管理的基石,其核心线程为何不会超时销毁一直是开发者关注的焦点。核心线程的永续机制不仅确保了系统的稳定响应,还避免了频繁创建和销毁线程带来的性能损耗。本文将从源码层面深入剖析线程池核心线程的存活原理,同时结合企业级实战案例,展示如何正确配置和管理线程…

DS新论文解读(2)

上一章忘了说论文名字了&#xff0c;是上图这个名字 我们继续&#xff0c;上一章阅读地址&#xff1a; dsv3新论文解读&#xff08;1&#xff09; 这论文剩下部分值得说的我觉得主要就是他们Infra通信的设计 先看一个图 这个是一个标准的h800 8卡with 8cx7 nic的图&#xf…

html文件cdn一键下载并替换

业务场景&#xff1a; AI生成的html文件&#xff0c;通常会使用多个cdn资源、手动替换or下载太过麻烦、如下py程序为此而生&#xff0c;指定html目录自动下载并替换~ import os import requests from bs4 import BeautifulSoup from urllib.parse import urlparse import has…