蓝桥杯管道

        一开始拿到这道题没有什么头绪。综合各路大佬题解,一下子豁然开朗。

        题眼:每一段感受器都感受到水的最早时间。由于整个管道,分为多个段,每个段都有一个感受器。所以题眼翻译为:覆盖满整条管道,所需要的最短时间。

        即:最大值最小问题——采用二分法。

        思路:用二分法取时间,然后使用区间覆盖的方法来判断是否在该时刻能够覆盖满整条管道。

拿题目测试数据作为例子。

管道长度为10,设有3个阀门,位置分别为1,6,10;开阀时间分别为1,5,2。

最短时刻取0,最长时刻取2*10(为了方便演示,就不取2倍管道最大长度了。这是易错点,解释一下为什么取2倍管道最大长度,而不取1倍管道最大长度:假设有一个管道长为1e9,仅有一个阀门,阀门位于最右侧10e9的位置,且开阀时间取到最晚为1e9。那么覆盖完整个管道,所需时间就是2*1e9。)。mid = 10,阀门1的覆盖区间为[1-(10-1),1+(10-1)],即[1,10]而非[-8,10]注意不能超过管道长度!!;阀门2的覆盖区间为[6-(10-5),6+(10-5)],即[1,10],而非[1,11]注意不能超过管道长度!!;阀门3的覆盖区间为[10-(10-2),10+(10-2)],即[2,10]。三个区间进行合并后为[1,10]满足要求。于是取mid = 5。覆盖区间分别为[1,5];[6,6];[7,10],区间合并后(注意,区间[1,5][6,6]算是成功合并了,接上了这个区间,变为[1,6],然后再与[7,10],合并后变为[1,10]),成功覆盖所有区间。mid = 2。三个区间为[1,1][6,6][10,10],合并后未能成功覆盖整条管道。mid = 3,[1,3][6,6][9,10]还是不成功,mid= 4,[1,4][6,6][8,10]也不成功。所以答案取5.

        经过上述这一番分析后,是不是就觉得很简单了,只需要编程实现就可以了。

// 看过题解后,自己写的答案
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL, LL> PLLLL;
const LL N = 1e5 + 10;
PLLLL F[N];  // F记录阀门的初始数据:阀门位置、开阀时间  
PLLLL Q[N];  // Q记录阀门在t时刻水流至的区间:左端点、右端点
LL n, len;// 判断time时刻是否能够覆盖整条管道
bool check(LL time)
{int counter = 0;  // 记录已开阀的数量// 求解每个阀门在该时刻可覆盖的区间for (int i = 0; i < n; i++){if (time >= F[i].second)// 判断该时刻该阀门是否已开阀{  // 已开阀LL t = time - F[i].second;//Q[counter].first = F[i].first - t;  // 区间左端点//Q[counter].second = F[i].first + t;  // 区间右端点// 这里也特别容易写错成上上面这样子,我们的区间不可能超过管道的总区间呀!!!Q[counter].first = max((LL)1, F[i].first - t);  // 为防止左端点为负数,所以这里使用max函数,最小为管道最左端1Q[counter].second = min(F[i].first + t, len);  // 使用max函数,最多为管道最右端lencounter++;}else  {  // 未开阀// 不做任何处理}}sort(Q, Q + counter);  // 区间合并前需要进行排序:注意,对于容器pair来说,sort第一二个参数分别为排序首元素的指针,排序末尾元素下一个地址的指针// 区间合并LL lp, rp;  // 合并后的总区间的左右端点lp = Q[0].first;  // 区间初始化,用第一个小区间进行初始化rp = Q[0].second;for (int i = 1; i < counter; i++)  // 遍历已开阀的阀门{if (Q[i].first <= rp + 1)  // 这里特别容易出错,举个例子[1,5][6,9]这两个区间就能够合并,所以需要+1{rp = max(rp, Q[i].second);  // 更新纵区间的右端点}else{  // 区间没有连接上-->存在没有水的部分,退出循环。break;}}// 判断区间是否覆盖整个管道return (lp == 1 && rp == len);
}
int main()
{ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n >> len;  // 输入阀门数n、管道长度lenfor (int i = 0; i < n; i++){cin >> F[i].first >> F[i].second;  // 输入阀门位置、打开时间}// 使用二分法判断选出覆盖整条管道所需的最小时间LL l = 1, r = 2e9 + 10;while (l < r){LL mid = (l + r) / 2;if (check(mid))  // 判断该时刻是否满足覆盖要求{r = mid;}else{l = mid + 1;}}cout << r;return 0;
}

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

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

相关文章

系统设计 --- E2E Test System

系统设计 --- E2E Test System 什么是E2EE2E Architecture Example 什么是E2E E2E&#xff08;端到端&#xff09;测试是一种软件测试方法&#xff0c;旨在模拟真实的用户场景&#xff0c;测试整个应用程序或系统的端到端功能和交互流程。E2E 测试涵盖了从用户界面到后端系统的…

用于车载T-BOX汽车级的RA8900CE

用于车载T-BOX等高精度计时的汽车级时钟模块RTC:RA8900CE.车载实时时钟芯片RA8900CE内置32.768Khz的晶体&#xff0c;实现年、月、日、星期、小时、分钟和秒精准计时。RA8900CE满足AEC-Q200认证&#xff0c;内置温补功能&#xff0c;保证实时时钟的稳定可靠&#xff0c;功耗低至…

计算机网络3——数据链路层3以太网的MAC层

文章目录 一、MAC 层的硬件地址1、介绍2、注意点3、定制标准 二、MAC 帧的格式1、结构2、工作原理3、其他 一、MAC 层的硬件地址 1、介绍 在局域网中&#xff0c;硬件地址又称为物理地址或 MAC地址(因为这种地址用在MAC帧中)。 大家知道&#xff0c;在所有计算机系统的设计中…

[C++][算法基础]能被整除的数(容斥原理)

给定一个整数 &#x1d45b; 和 &#x1d45a; 个不同的质数 &#x1d45d;1,&#x1d45d;2,…,&#x1d45d;&#x1d45a;。 请你求出 1∼&#x1d45b; 中能被 &#x1d45d;1,&#x1d45d;2,…,&#x1d45d;&#x1d45a; 中的至少一个数整除的整数有多少个。 输入格式…

Linux报错处理:‘abrt-cli status’ timed out

最近登录服务器时出现报错&#xff0c;后来查阅资料发现是因为ssh登录时间很久&#xff0c;登录后出现abrt-cli status timed out 的报错。 1.问题分析 abrt-cli是ABRT(Automated Bug Reporting Tool)的命令行接口&#xff0c;用于在Linux系统中处理和报告程序崩溃。 如果abr…

【Java--数据结构】“从扑克到程序:深入探讨洗牌算法的原理与魅力“

前言 以下是学习Java顺序表的一个实例应用———简单的洗牌算法。 欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 前言 定义每张扑克牌的属性 生成一副扑克牌&#xff08;不包含大小王&#xff09; 洗牌方法 发牌方…

软件测试之【软件测试概论二】

读者大大们好呀&#xff01;&#xff01;!☀️☀️☀️ &#x1f525; 欢迎来到我的博客 &#x1f440;期待大大的关注哦❗️❗️❗️ &#x1f680;欢迎收看我的主页文章➡️寻至善的主页 文章目录 前言软件测试模型瀑布模型V模型W&#xff08;双V&#xff09;模型测试活动 软…

ElasticSearch总结二

正向索引和倒排索引&#xff1a; 正向索引&#xff1a; 比方说我这里有一张数据库表&#xff0c;那我们知道对于数据库它一般情况下都会基于i d去创建一个索引&#xff0c;然后形成一个b树。 那么你根据i d进行检索的速度&#xff0c;就会非常的快&#xff0c;那么这种方式的…

(N-151)基于微信小程序校园学生活动管理平台

开发工具&#xff1a;IDEA、微信小程序 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 前端技术&#xff1a;vue、uniapp 服务端技术&#xff1a;springbootmybatisplus 本系统分微信小程序和管理后台两部分&am…

吴恩达深度学习笔记:深度学习的 实践层面 (Practical aspects of Deep Learning)1.6-1.8

目录 第一门课&#xff1a;第二门课 改善深层神经网络&#xff1a;超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)第一周&#xff1a;深度学习的 实践层面 (Practical aspects of Deep Learning)…

【六十】【算法分析与设计】用一道题目解决dfs深度优先遍历,dfs中节点信息,dfs递归函数模板进入前维护出去前回溯,唯一解的剪枝飞升返回值true

路径之谜 题目描述 小明冒充X星球的骑士,进入了一个奇怪的城堡。 城堡里边什么都没有,只有方形石头铺成的地面。 假设城堡地面是nn个方格。如下图所示。 按习俗,骑士要从西北角走到东南角。可以横向或纵向移动,但不能斜着音走,也不能跳跃。每走到一个新方格,就要向正北 方和正西…

跨部门协作中的沟通困境与平台建设策略——以软硬件研发为例

一、背景 在科技行业&#xff0c;跨部门合作的重要性不言而喻&#xff0c;然而实际工作中&#xff0c;经常会遭遇沟通不畅的现象。以软件与硬件研发部门为例&#xff0c;两者在产品研发过程中经常需要紧密协作&#xff0c;但却时常出现信息传递障碍。当你试图阐述观点时&#…

01、创建型-单例模式--只有一个实例

文章目录 前言一、基本介绍1.1 什么是单例模式1.2 为什么要用单例模式1.3 应用场景1.4 单例优缺点 二、单例模式的实现方式2.1 饿汉式单例2.1.1 静态变量方式2.1.2 静态代码块 2.2 懒汉式单例2.2.1 懒汉式单例2.2.2 懒汉式优化①-线程安全2.2.2 懒汉式优化②-双重检查锁2.2.3 懒…

图书租赁系统-扣费服务

resources中添加moment.js文件。 然后引入moment.js文件&#xff1a; <script src"/js/moment.js"></script>借阅结束时间选完后changeDate事件&#xff1a; $("input[nameendTime]").datetimepicker({format: "yyyy-mm-dd hh:ii",…

分享基于鸿蒙OpenHarmony的Unity团结引擎应用开发赛

该赛题旨在鼓励更多开发者基于OpenHarmony4.x版本&#xff0c;使用团结引擎创造出精彩的游戏与应用。本次大赛分为“创新游戏”与“创新3D 化应用”两大赛道&#xff0c;每赛道又分“大众组”与“高校组”&#xff0c;让不同背景的开发者同台竞技。无论你是游戏开发者&#xff…

【NoC片上网络 On-Chip Network】应用程序的网络流量 合成网络流量

应用程序的网络流量 and 合成网络流量 1. 应用程序的网络流量 APPLICATION TRAFFIC2. 合成网络流量 SYNTHETIC TRAFFIC3. 合成网络流量的具体介绍 应用程序的网络流量 and 合成网络流量 1. 应用程序的网络流量 APPLICATION TRAFFIC 在 MPSoC(多处理器片上系统) 中&#xff…

网络安全之CSRFSSRF漏洞(上篇)(技术进阶)

目录 一&#xff0c;CSRF篇 二&#xff0c;认识什么是CSRF 三&#xff0c;实现CSRF攻击的前提 四&#xff0c;实战演练 【1】案例1 【2】案例2 【3】案例3 【4】案例4&#xff08;metinfo&#xff09; 一&#xff0c;CSRF篇 二&#xff0c;认识什么是CSRF CSRF&#x…

使用ollama部署llama3-8B

windows系统 安装ollama教程如下&#xff1a;https://juejin.cn/post/7359821944147722280 如果你不仅仅满足于本地自己调试&#xff0c;还希望同事也能够访问 那么按照下面步骤走&#xff08;windows系统&#xff09; set OLLAMA_HOST0.0.0.0 ollama serve然后同一个局域网下…

uniapp app权限说明弹框2024.4.23更新

华为上架被拒绝 用uni-app开发的app&#xff0c;上架华为被拒&#xff0c;问题如下&#xff1a; 您的应用在运行时&#xff0c;未见向用户告知权限申请的目的&#xff0c;向用户索取&#xff08;电话、相机、存储&#xff09;等权限&#xff0c;不符合华为应用市场审核标准。…

图解《图搜索算法》及代码实现

关注我&#xff0c;持续分享逻辑思维&管理思维&#xff1b; 可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导&#xff1b; 有意找工作的同学&#xff0c;请参考博主的原创&#xff1a;《面试官心得--面试前应该如何准备》&#xff0c;《面试官心得--面试时如何进行自…