G. Vlad and the Mountains

题目链接:Problem - G - Codeforces

题目大意:

现有n座山, 每座山都有它的高度h[ i ] (第i座),现有人去爬山, 从 山 i 到山 j 能量消耗为 h[ j ] -       h[ i] , 相当于从低山到高的山消耗能量, 从高的山到低的山恢复能量。后有q次查询问,这q次是否可以从a山到b山,给了初始能量e.

输入:

输入的第一行包含一个整数 t ( 1≤t≤1e4 )。( 1≤t≤1e4 ) - 测试用例的数量。

下面是测试用例的说明。

每个测试用例的第一行包含两个数字 n 和 m ( 2≤n≤2⋅1e5 )--分别是山的数量和山间道路的数量。

第二行包含 n 个整数 h1,h2,h3,…,hn( 1≤hi≤1e9 )--山的高度。

接下来的 m 行包含两个整数 u 和 v ( 1≤u,v≤n , u≠vu≠v )--由一条道路连接的山脉的编号。保证没有一条道路出现两次。

下一行包含一个整数 q ( 1≤q≤2⋅1e5)--查询次数。

接下来的 q 行包含三个数字 a 、 b 和 e ( 1≤a,b≤n1≤a,b≤n 、 0≤e≤1e9)--分别是路线的初始和最终山脉以及能量。

保证所有测试用例的 n 之和不超过 2⋅1e5 。同样的保证也适用于 m 和 q 。

输出:

可以YES, 不可以NO

每个此时样例要分开。

算法: 最小生成树, 贪心, 离线查询

1.首先先看爬山的情况: 假如现有山峰高度 5,3,4,7,10   假设从高度为5的山出发,初始能量为3 , 那么可以看出可以爬到 高度为 3,4,7的山。而爬不上高度为 10 的山。所以可以看出能否爬上另一座山主要看初始高度与开始的能量总和是否大于另一座山。(因为下山要恢复能量)

2.由此可见,在有一些道路是可以不用走的。联想到最小生成树,并且为了更好的利用以上的条件,采用离线查询的方式构建最小生成树。

3.先建立边集合,从 u山到v山,将两座山的最大值看做权值。用于后面建树时 当查询时的初始值  比该边(u,v)的权值大时说明 此时 的a山可以到u山与v山。就用并查集维护起来, 当边集为空, 或边(u,v)的权值大了,说明已经建好树,或到达不了其他山了。然后判断 a, b是否在一个连通块里。

4.建树查询的方案要先按初始能量排序,后通过比较建树。

可看代码理解

#include <bits/stdc++.h>
using namespace std;using i64 = long long;
using i128 = __int128;
using ui64 = unsigned long long;struct DSU{int n;vector<int> tree, sz;DSU(){}DSU(int n){innt(n);}void innt(int n){this->n = n;tree.resize(n+1);sz.assign(n+1,1);for(int i=0; i<=n; i++) {tree[i] = i;}}int find(int x){if(tree[x] != x) {int fx = find(tree[x]);tree[x] = fx;}return tree[x];}bool merge(int a,int b){a = find(a);b = find(b);if(a == b)return false;sz[a] += sz[b];tree[b] = a;return true;}bool same(int a, int b){return find(a) == find(b);}int size(int x){return sz[find(x)];}
};void solve(){int n, m;cin >> n >> m;DSU dsu = DSU(n);//并查集vector<int> h(n);for(int i=0; i<n; i++) {cin >> h[i];}//建立边集合priority_queue<array<int, 3>, vector<array<int, 3>>, greater<array<int, 3>>> dq;for(int i=0; i<m; i++) {int u, v;cin >> u >> v;u--, v--;dq.push({max(h[v], h[u]), u, v});//取最大值,用于判断是否可以达到u, v点}int q;cin >> q;vector<array<int, 4>> quy(q);vector<bool> ans(q);for(int i=0; i<q; i++) {int a, b, e;cin >> a >> b >> e;a--, b--;quy[i] = {h[a]+e, a, b, i};//初始能量h[a]+e, i 为了方便找到原来的顺序输出}sort(quy.begin(), quy.end());for(int i=0; i<q; i++) {auto [hight, a, b, pos] = quy[i];while(!dq.empty() && dq.top()[0] <= hight) { //关键auto [_, u, v] = dq.top();dq.pop();dsu.merge(u, v);}ans[pos] = dsu.same(a, b);//判断是否可以在里面//因为并查集维护的点均是山的高度比初始能量(a)小的山}for(int i=0; i<q; i++) {if(ans[i]) {cout << "YES\n";}else{cout << "NO\n";}}cout << "\n";//换行
}int main(){ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);int t = 1;cin >> t;while(t--) {solve();}return 0;
}

欢迎大佬指正。

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

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

相关文章

活动预告 |【Part1】Microsoft Azure 在线技术公开课:基础知识

课程介绍 参加“Azure 在线技术公开课&#xff1a;基础知识”活动&#xff0c;培养有助于创造新的技术可能性的技能并探索基础云概念。参加我们举办的本次免费培训活动&#xff0c;扩充自身的云模型和云服务类型知识。你还可以查看以计算、网络和存储为核心的 Azure 服务。 活…

python 语音识别方案对比

目录 一、语音识别 二、代码实践 2.1 使用vosk三方库 2.2 使用SpeechRecognition 2.3 使用Whisper 一、语音识别 今天识别了别人做的这个app,觉得虽然是个日记app 但是用来学英语也挺好的,能进行语音识别,然后矫正语法,自己说的时候 ,实在不知道怎么说可以先乱说,然…

C# OpenCvSharp 部署MOWA:多合一图像扭曲模型

目录 说明 效果 项目 代码 下载 参考 C# OpenCvSharp 部署MOWA&#xff1a;多合一图像扭曲模型 说明 算法模型的paper名称是《MOWA: Multiple-in-One Image Warping Model》 ariv链接 https://arxiv.org/pdf/2404.10716 效果 Stitched Image 翻译成中文意思是&…

【Java】线上故障排查实战

引言 JVM命令详细可以看前一篇文章&#xff0c;本篇文章基于之前的命令做一次简单的线上故障排查分析 JVM常见命令 实战 1. 一般显示都是Linux系统&#xff0c;我们排查winodows系统想知道CPU和内存使用情况&#xff0c;打开任务管理器就可以出现图形化界面&#xff0c;而L…

编译spring 6.2.2

如何编译Spring 6.2.2 下载spring 6.2.2 首先&#xff0c;下载spring 6.2.2&#xff0c;地址&#xff1a;下载 解压到你的目录下。 下载gradle 下载gradle&#xff0c;这是spring项目的依赖管理工具&#xff0c;本文下载的是8.12.1 gradle下载 下载合适的JDK 本文下载的是…

深度求索(DeepSeek)的AI革命:NLP、CV与智能应用的技术跃迁

Deepseek官网&#xff1a;DeepSeek 引言&#xff1a;AI技术浪潮中的深度求索 近年来&#xff0c;人工智能技术以指数级速度重塑全球产业格局。在这场技术革命中&#xff0c;深度求索&#xff08;DeepSeek&#xff09;凭借其前沿的算法研究、高效的工程化能力以及对垂直场景的…

Android Studio超级详细讲解下载、安装配置教程(建议收藏)

博主介绍&#xff1a;✌专注于前后端、机器学习、人工智能应用领域开发的优质创作者、秉着互联网精神开源贡献精神&#xff0c;答疑解惑、坚持优质作品共享。本人是掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战&#xff0c;深受全网粉丝喜爱与支持✌有…

计算机毕业设计Python+Vue.js游戏推荐系统 Steam游戏推荐系统 Django Flask 游 戏可视化 游戏数据分析 游戏大数据 爬虫

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

版本更新|OpenCSG AutoHub v0.2.8

AutoHub v0.2.8现已发布&#xff01; AutoHub v0.2.8本次更新致力于提升用户体验、增强系统的兼容性和流畅性。通过优化单页应用的支持、提示语推荐功能以及新增页面跳转支持&#xff0c;用户在执行工作流时能够更加高效、便捷。同时&#xff0c;针对界面的多项优化&#xff0…

DeepSeek-R1模型的数学原理(说人话)

文章目录 1、什么是GRPO2、数学原理3、比喻4、流程总结 &#x1f343;作者介绍&#xff1a;双非本科大四网络工程专业在读&#xff0c;阿里云专家博主&#xff0c;前三年专注于Java领域学习&#xff0c;擅长web应用开发&#xff0c;目前已转行人工智能领域。 &#x1f985;个人…

智慧停车场解决方案(文末联系,领取整套资料,可做论文)

一、方案概述 本智慧停车场解决方案旨在通过硬件设备与软件系统的深度整合&#xff0c;实现停车场的智能化管理与服务&#xff0c;提升车主的停车体验&#xff0c;优化停车场运营效率。 二、硬件架构 硬件设备说明&#xff1a; 车牌识别摄像机&#xff1a;安装在停车场入口和…

对“云原生”的初印象

一、背景 最近因为在工作中以及一些技术博客中听的比较火的一个关键词 "云原生"&#xff0c;于是产生了好奇&#xff0c;云原生到底是什么东西&#xff1f;自己对云原生也是一个纯小白&#xff0c;于是带着这个问题去好好了解一下&#xff0c;什么是"云原生&qu…

物联网软件开发与应用方向应该怎样学习,学习哪些内容,就业方向是怎样?(文末领取整套学习视频,课件)物联网硬件开发与嵌入式系统

随着物联网技术的飞速发展&#xff0c;物联网软件开发与应用方向成为了众多开发者关注的焦点。那么&#xff0c;如何在这个领域中脱颖而出呢&#xff1f;本文将为你提供一份详细的学习指南&#xff0c;帮助你从零开始&#xff0c;逐步掌握物联网软件开发与应用的核心技能。 一…

数据结构-基础

1、概念&#xff1a; 程序 数据结构 算法 2、程序的好坏 可读性&#xff0c;稳定性&#xff0c;扩展性&#xff0c;时间复杂度&#xff0c;空间复杂度。 3、数据结构 是指存储、组织数据的方式&#xff0c;以便高效地进行访问和修改。通过选择适当的数据结构&#xff0c; 能…

蓝耘智算平台与DeepSeek R1模型:推动深度学习发展

公主请阅 前言何为DeepSeek R1DeepSeek R1 的特点DeepSeek R1 的应用领域DeepSeek R1 与其他模型的对比 何为蓝耘智算平台使用蓝耘智算平台深度使用DeepSeek R1代码解释&#xff1a;处理示例输入&#xff1a;输出结果&#xff1a; 前言 在深度学习领域&#xff0c;创新迭代日新…

神经网络(Neural Network)

引言 神经网络,作为人工智能和机器学习领域的核心组成部分,近年来在诸多领域取得了显著的进展。受生物神经系统的启发,神经网络通过模拟人脑神经元的工作机制,能够从大量数据中学习复杂的模式和关系。其强大的非线性建模能力使其在图像识别、自然语言处理、语音识别和预测…

基于python多线程多进程爬虫的maa作业站技能使用分析

基于python多线程多进程爬虫的maa作业站技能使用分析 技能使用分析 多线程&#xff08;8核&#xff09; import json import multiprocessing import requests from multiprocessing.dummy import Pooldef maa(st):url "https://prts.maa.plus/copilot/get/"m …

npm无法加载文件 因为此系统禁止运行脚本

安装nodejs后遇到问题&#xff1a; 在项目里【node -v】可以打印出来&#xff0c;【npm -v】打印不出来&#xff0c;显示npm无法加载文件 因为此系统禁止运行脚本。 但是在winr&#xff0c;cmd里【node -v】,【npm -v】都也可打印出来。 解决方法&#xff1a; cmd里可以打印出…

2.9寒假作业

web&#xff1a;[SWPUCTF 2022 新生赛]ez_ez_php(revenge) 打开环境&#xff0c;进行代码审计 下面有提示访问游戏flag.php&#xff0c;尝试看看 提示了正确的flag&#xff0c;还有要使用为协议&#xff0c;之前也了解过&#xff0c;关于执行包含文件例如include可使用为协议绕…

【Matlab优化算法-第13期】基于多目标优化算法的水库流量调度

一、前言 水库流量优化是水资源管理中的一个重要环节&#xff0c;通过合理调度水库流量&#xff0c;可以有效平衡防洪、发电和水资源利用等多方面的需求。本文将介绍一个水库流量优化模型&#xff0c;包括其约束条件、目标函数以及应用场景。 二、模型概述 水库流量优化模型…