蓝桥杯 区间移位--二分、枚举
题目

代码
| #include <stdio.h> #include <string.h> #include <vector> #include <algorithm> #include <iostream> using namespace std; struct node{ int a,b; }; vector<node> q; bool cmp(node x,node y){ return x.b < y.b; } bool check(int m){ //最大的移动距离m,判断移动完之后能否覆盖整个区间 vector<node> tmp(q);//复制一个vector q int k=0;//能覆盖的右端点 while(true){ bool flag=false; for(int i=0;i<tmp.size();i++){//对每个区间都移动一下 node now=tmp[i];
int ta=now.a; int tb=now.b; //k应该在【ta-m , tb+m】 里才能保持连接的10000长度 //下面讨论的是如果在 if(ta-m <= k && tb+m >= k){ // 如果当前区间的移动后能与 k 连接,则更新 k 的值。 flag=true; int len=tb-ta;//当前区间的长度
if(ta+m >= k){ k=k+len;//更新k,k可以到更远 } else{ k=tb+m; } tmp.erase(tmp.begin()+i); break; } } if(k >= 20000 || !flag)//如果没有区间符合 break; } return k >= 20000;//当前假设长度m符合最终条件,可以考虑调小 } int main(){ int n; cin>>n; for(int i=0;i<n;i++){ int aa,bb; cin>>aa>>bb; //因为最后答案可能存在0.5,所以扩大两倍 //最后再除以2 aa = aa*2; bb = bb*2; q.push_back({aa,bb}); } //对vector排序 sort(q.begin(),q.end(),cmp); int l=0,r=20000;//区间 while(l<=r){ int mid=(l+r)/2; if(check(mid)){//如果能满足最终条件,说明该mid偏大,答案在左半段, //找最小的左端点 r=mid-1; } else l=mid+1; } //最后l=r //cout<<l<<' '<<r<<endl; double ans=l/2.0;//最后有0.5 cout<<ans<<endl; return 0; } |
运行评判结果

总结:
每个区间的两个端点分别为 a 和 b,要求找到一个最小的移动距离 m,使得所有区间通过向左或向右移动不超过 m 的距离后能够连续覆盖 [0, 10000] 这个区间。由于答案可能包含 0.5,所以将输入的区间扩大了两倍来处理,最终结果再除以2。使用二分查找来确定最小的移动距离 m。首先定义搜索的上下界,然后不断缩小范围直到找到满足条件的最小 m 值。使用变量 k 来追踪当前已覆盖的最右端点。如果当前区间的移动后能与 k 连接,则更新 k 的值。
相关文章:
蓝桥杯 区间移位--二分、枚举
题目 代码 #include <stdio.h> #include <string.h> #include <vector> #include <algorithm> #include <iostream> using namespace std; struct node{ int a,b; }; vector<node> q; bool cmp(node x,node y){ return x.b <…...
Nginx 报错400 Request Header Or Cookie Too Large
错误的原因: 1、可能是你的网络DNS配置错误。 2、由request header过大所引起,request过大,通常是由于cookie中写入了较大的值所引起的。 3、访问太频繁,浏览器的缓存量太大,产生错误。 解决办法: 1、清…...
【Redis】一种常见的Redis分布式锁原理简述
本文主要简述一下基于set命令的Redis分布式锁的原理。 一,a线程持有的锁不要被b线程同时持有→setnx 抢锁的时候,最核心的就是,a线程持有的锁不要被b线程同时持有,放在基于set命令的redis分布式锁中来看,就是“如果锁…...
HOT100_最大子数组和
class Solution {public int maxSubArray(int[] nums) {int[] dp new int[nums.length];int res nums[0];dp[0] nums[0];for(int i 1; i< nums.length; i){dp[i] Math.max(nums[i] ,dp[i-1] nums[i]);res Math.max(res, dp[i]);}return res;} }...
DiskGenius工具扩容Mac OS X Apple APFS分区
DiskGenius是一款功能强大的磁盘分区工具,它支持Windows和Mac OS X系统,可以用于管理硬盘分区,包括扩容Mac OS X的Apple APFS分区。然而,直接使用DiskGenius来扩容Mac OS X的APFS分区可能存在一定的风险,因为不是专门为…...
从零开始的LeetCode刷题日记:70. 爬楼梯
一.相关链接 题目链接:70. 爬楼梯 二.心得体会 这道题还是动规五部曲。 1.首先是dp数组及其下标的含义,dp记录了每层楼梯对应的爬的方法,每个下标存储每个对应楼层。 2.然后是递归公式,其实每一层楼都是可以从下面一层和下面…...
Unity照片墙效果
Unity照片墙效果,如下效果展示 。 工程源码...
【自动化利器】12个评估大语言模型(LLM)质量的自动化框架
LLM评估是指在人工智能系统中评估和改进语言和语言模型的过程。在人工智能领域,特别是在自然语言处理(NLP)及相关领域,LLM评估具有至高无上的地位。通过评估语言生成和理解模型,LLM评估有助于细化人工智能驱动的语言相…...
【1】基础概念
文章目录 一、特点二、基础语法注意三、官方编程指南四、go 语言标准库 API 一、特点 golang 一个 go 文件都要归属到一个包,需要进行申明。天然的并发:golang 从语言层面支持大并发。每个 go 文件都必须要归属到一个包中。执行 go 文件:go …...
HTML 文档规范与解析模式:DOCTYPE、<html> 标签以及结构化页面
文章目录 `<!DOCTYPE html>` 文档类型声明标准模式与怪异模式HTML5 的简化声明`<html>` 标签`<head>` 标签`<body>` 标签小结<!DOCTYPE html> 文档类型声明 在 HTML 文档中,<!DOCTYPE html> 是一个重要的文档类型声明,主要用于告知浏览…...
大模型微调技术 --> 脉络
Step1:脉络 微调技术从最早期的全模型微调演变成如今的各种参数高效微调(PEFT)方法,背后是为了应对大模型中的计算、存储和数据适应性的挑战 1.为什么有微调? 深度学习模型越来越大,尤其是 NLP 中的预训练语言模型(BERT, GPT)系列。如果从…...
不要只知道deepl翻译,这里有10个专业好用的翻译工具等着你。
deepl翻译的优点还是有很多的,比如翻译的准确性很高,支持翻译的语言有很多,并且支持翻译文件和文本。但是现在翻译工具那么多,大家需要翻译的场景也有很多,怎么能只拥有一个翻译工具呢。所以在这里我帮助大家寻找了一波…...
第二节 管道符、重定向与环境变量
1.重定向技术的 5 种模式 (1)标准覆盖输出重定向 (2)标准追加输出重定向 (3)错误覆盖输出重定向 (4)错误追加输出重定向 (5)输入重定向2.输入输出重定向 输入…...
Linux 服务器使用指南:从入门到登录
🌟快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 🌟 🚩博主致力于用通俗易懂且不失专业性的文字,讲解计算机领域那些看似枯燥的知识点🚩 目录 一…...
QT 如何使QLabel的文字垂直显示
想要实现QLabel文字的垂直显示,可以通过使用“文字分割填充换行符”的方式来实现QLabel文字垂直显示的效果,下面是效果图: 具体实现代码: #include "mainwindow.h" #include "ui_mainwindow.h"MainWindow:…...
蓬勃发展:移动开发——关于软件开发你需要知道些什么
一、前言 移动开发一直都是软件开发领域中最有趣的领域之一,这是因为: 1、移动开发为“只有一个人”的开发团队提供了一个非常独特的机会,让他可以在相对较短的时间内建立一个实际的、可用的、有意义的应用程序; 2、移动开发也代…...
1095. 山脉数组中查找目标值
目录 题目解法lambda在这是怎么用的? 题目 (这是一个 交互式问题 ) 你可以将一个数组 arr 称为 山脉数组 当且仅当: arr.length > 3 存在一些 0 < i < arr.length - 1 的 i 使得: arr[0] < arr[1] <…...
【深度学习】InstantIR:图片高清化修复
InstantIR——借助即时生成参考的盲图像修复新方法 作者:Jen-Yuan Huang 等 近年来,随着深度学习和计算机视觉技术的飞速发展,图像修复技术取得了令人瞩目的进步。然而,对于未知或复杂退化的图像进行修复,仍然是一个充满挑战的任务。针对这一难题,研究者们提出了 Insta…...
推荐一款PowerPoint转Flash工具:iSpring Suite
iSpring Suite是一款PowerPoint转Flash工具,使用iSpring Suite 8可以轻松的将PPT演示文档转换为对Web友好的Flash影片格式。软件界面简洁,使用方便。为什么要转换成flash格式呢?Flash格式的最大特点是体积小巧、易于分发,兼容所有的操作系统…...
如何搭建汽车行业AI知识库:定义+好处+方法步骤
在汽车行业,大型车企面临着员工众多、价值链长、技术密集和知识传播难等挑战。如何通过有效的知识沉淀与应用,提升各部门协同效率,快速响应客户咨询,降低销售成本,并开启体系化、可持续性的知识管理建设,成…...
连续处理效应下的双重差分:从二元到连续的范式演进与DML应用
1. 连续处理效应下的双重差分:从二元到连续的范式演进双重差分(Difference-in-Differences, DiD)是评估政策或干预因果效应的基石方法。它的核心逻辑直观而有力:比较处理组和对照组在干预前后的结果变化,其差值就被认为…...
别再只用top了!用nload实时监控Linux服务器网卡流量(CentOS 7/8安装配置详解)
别再只用top了!用nload实时监控Linux服务器网卡流量(CentOS 7/8安装配置详解)在Linux服务器运维中,网络流量监控是日常工作的核心环节。许多管理员习惯使用top或iftop等工具,但这些工具要么缺乏直观的流量可视化&#…...
统信UOS 20.1060专业版美化全攻略:从桌面到GRUB再到锁屏,一次搞定个性化设置
统信UOS 20.1060专业版深度美化指南:打造高效统一的视觉工作流第一次打开统信UOS专业版时,默认的蓝色渐变桌面确实给人一种专业稳重的印象。但连续使用几周后,我发现自己开始对着千篇一律的界面走神——这就像每天穿着同样的西装上班…...
Julia语言在科学机器学习领域的优势、挑战与实践指南
1. 科学机器学习:当物理定律遇见数据驱动如果你和我一样,长期在科学计算和机器学习的交叉领域“搬砖”,那你一定对“两难困境”深有体会。我们既需要Python那样灵活、易上手的语法来快速验证物理模型和算法原型,又渴望C级别的极致…...
LeetCode 523:连续的子数组和 | 前缀和同余定理
LeetCode 523:连续的子数组和 | 前缀和同余定理 引言 连续的子数组和(Continuous Subarray Sum)是 LeetCode 第 523 题,难度为 Medium。题目要求判断数组中是否存在长度至少为 2 的连续子数组,其元素和是 K 的倍数。这…...
Burp Suite扫描深度配置指南:被动扫描、主动扫描与自定义插入点协同调优
1. 这不是“点一下就扫完”的配置,而是扫描质量的分水岭 很多人把 Burp Suite Scanner 当成一个“自动漏洞探测器”——填个 URL,点下“Active Scan”,等它跑完弹出一堆高危告警,就以为任务完成了。我见过太多这样的场景ÿ…...
Arm Development Studio许可协议核心条款与合规指南
1. Arm Development Studio 终端用户许可协议解析作为一名长期从事嵌入式开发的工程师,我深知开发工具许可协议的重要性。Arm Development Studio 作为业界领先的嵌入式开发套件,其 EULA(终端用户许可协议)直接影响着我们的日常开…...
量子神经网络抗噪优化:经典噪声层与可微架构搜索的协同设计
1. 项目概述:当量子计算遇见噪声与架构挑战最近在折腾量子机器学习(QML)的项目,特别是量子神经网络(QNN),一个绕不开的坎就是“噪声”。无论是超导、离子阱还是光子平台,当前的含噪声…...
Linux-安装cmatrix
linux-安装cmatrix (黑客帝国矩阵效果) su root #切换身份到root不受权限控制 cd /usr/src #进入源码下载位置,准备下载安装包利用xftp 共享传送文件进入home找到文件,cp 文件 /usr/src解压,进…...
内网渗透之横向移动实战
在红队渗透测试中,当我们通过 Web 渗透拿到边界服务器的权限后,往往不会止步于此 —— 内部网络中还隐藏着更多的核心资产,比如存储着企业所有账号信息的域控制器。而横向移动,就是我们从边界主机出发,一步步渗透到内网…...
