Peter算法小课堂—区间模型(2)

上次咋们讲了前两个区间模型:1.最大不重叠区间数 2.不重叠区间最少分组数。今天我们就学习:最小区间覆盖问题、区间重叠最厚层数!

最小区间覆盖

先看三道题

那么,第1题,它是浮点数的题,也就要求首尾相同。第2题,是整数型,也就要求首尾差1。

大家思考思考如何规划这个算法。

算法

将所有区间按左坐标从小到大排序,顺序处理每一个区间。每次选择覆盖点s的区间中右坐标最大的区间,并将s更新为此区间右坐标,直到选择的区间包含t。

算法证明

显然该算法的准确性是一定的,一下证明该算法的最小性。

所以,证毕。

实现

选择区间使用线性扫描进行。排序(O(nlog n))+扫描(O(n))=O(nlog n)

整数覆盖

整数覆盖对应着第二题,下面给出代码

#include <bits/stdc++.h>
using namespace std;
const int N=109;
struct piece{int s,t;};
bool cmp(const piece& a,const piece& b){return a.s<b.s||a.s==b.s&&a.t<b.t;
}
piece d[N];
int main(){int i,j,n;cin>>n;for(i=0;i<n;i++) cin>>d[i].s>>d[i].t;sort(d,d+n,cmp);int S=1,T=100,cnt=0;for(i=0;i<n&&S<=T;i++){for(j=i;j<n&&d[j].s<=S;j++)if(d[j].t>d[i].t) i=j;if(d[i].s>S) break;S=d[i].t+1;cnt++; }if(S<=T) cout<<"sorry"<<endl;else cout<<cnt<<endl;return 0;
}

当然,浮点数覆盖也就只改了double,S=d[i].t和i<n&&S<T还有if(S<T),而已。

区间重叠最厚层数

给一道例题把

这里我们要将一个“扫描算法”(不是扫描线)。长这样👇

代码:

#include <bits/stdc++.h>
#define N 2005
using namespace std;
struct point{int pos,tag;};
bool cmp(const point&a,const point&b){return a.pos<b.pos||a.pos==b.pos&&a.tag>b.tag;
}
point d[N];
int main(){int n,cnt=0,ans=0;cin>>n;for(int i=0;i<n+n;i+=2){cin>>d[i].pos>>d[i+1].pos;d[i].tag=1;d[i+1].tag=-1;}sort(d,d+n+n,cmp);for(int i=0;i<n+n;i++){cnt+=d[i].tag;ans=max(ans,cnt);}cout<<ans<<endl;return 0;
}

我们每一次涂修正带用两格的地方存pos和tag,tag指的是标记,pos指的是从几到几。

当然,还有一种加权的类型,比如说,你在[S,T]区间内要涂R层修正带,看下一题。

399

题目描述

你作为西佳佳部落的首领,今天将面临n场其他部落的挑衅,你需要调度投石器去抵御外敌。为了消灭部落i派来的敌人,你需要ri个投石器,在时间si到ti进行战斗。你的投石器每一场战役打完无需休息,直接可以投入下一场战斗。请问你至少需要制造多少个投石器就能抵御所有外敌?

#include <bits/stdc++.h>
#define N 20005
using namespace std;
struct point{int pos,tag;};
bool cmp(const point&a,const point&b){return a.pos<b.pos||a.pos==b.pos&&a.tag<b.tag;
}
point d[N];
int main(){int n,cnt=0,ans=0;cin>>n;for(int i=0;i<n+n;i+=2){int h1,h2,m1,m2;char ch;cin>>h1>>ch>>m1>>ch>>h2>>ch>>m2>>d[i].tag;d[i].pos=h1*60+m1;d[i+1].pos=h2*60+m2;d[i+1].tag=-d[i].tag;}sort(d,d+n+n,cmp);for(int i=0;i<n+n;i++){cnt+=d[i].tag;ans=max(ans,cnt);}cout<<ans<<endl;return 0;
}

这里的tag变了哦。

希望这些对大家有用,三连必回。

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

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

相关文章

JavaScript 事件循环:Event Loop

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 事件循环 是 web 开发中的一个核心概念&#xff0c;它是 JavaScript…

【Azure】微软 Azure 基础解析(五)核心体系结构之管理组、订阅、资源和资源组以及层次关系

本系列博文还在更新中&#xff0c;收录在专栏&#xff1a;「Azure探秘&#xff1a;构建云计算世界」 专栏中。 本系列文章列表如下&#xff1a; 【Azure】微软 Azure 基础解析&#xff08;三&#xff09;描述云计算运营中的 CapEx 与 OpEx&#xff0c;如何区分 CapEx 与 OpEx…

爬虫——ajax和selenuim总结

为什么要写这个博客呢&#xff0c;这个代码前面其实都有&#xff0c;就是结束了。明天搞个qq登录&#xff0c;这个就结束了。 当然也会更新小说爬取&#xff0c;和百度翻译&#xff0c;百度小姐姐的爬取&#xff0c;的对比爬取。总结嘛&#xff01;&#xff01;&#xff01;加…

【Linux】进程信号概念 | 核心转储 | 信号的产生

文章目录 一、信号入门1.1 生活中的信号1.2 进程角度的信号1.3 信号的概念1.4 信号的三种常见处理方式 二、信号的产生2.1 通过终端按键产生信号问题1&#xff1a;OS怎么知道键盘输入了ControlC &#xff1f;问题2&#xff1a;按CtrlC终止进程和按Ctrl\终止进程&#xff0c;有什…

BUGKU-WEB 矛盾

题目描述 进入场景看看&#xff1a; 代码如下&#xff1a; $num$_GET[num]; if(!is_numeric($num)) { echo $num; if($num1) echo flag{**********}; }解题思路 需要读懂一下这段PHP代码的意思明显是一道get相关的题目&#xff0c;需要提供一个num的参数,然后需要传入一个不…

nba2k24 灌篮高手樱木花道面补

nba2k24 灌篮高手樱木花道面补 nba2k23-nba2k24通用 灌篮高手樱木花道面补 下载地址&#xff1a; https://www.changyouzuhao.cn/9539.html

《Java 简易速速上手小册》第7章:Java 网络编程(2024 最新版)

文章目录 7.1 网络基础和 Java 中的网络 - 揭开神秘的面纱7.1.1 基础知识7.1.2 重点案例&#xff1a;实现一个简单的聊天程序7.1.3 拓展案例 1&#xff1a;使用 UDP 进行消息广播7.1.4 拓展案例 2&#xff1a;建立一个简单的 Web 服务器 7.2 创建客户端和服务器 - 构建沟通的桥…

SpringBoot+Vue3 完成小红书项目

简介 该项目采用微服务架构&#xff0c;实现了前后端分离的系统设计。在前端&#xff0c;我们选择了 Vue3 配合 TypeScript 和 ElementUi 框架&#xff0c;以提升开发效率和用户体验。而在后端&#xff0c;则是运用 SpringBoot 和 Mybatis-plus 进行开发&#xff0c;保证了系统…

springboot186人格障碍诊断系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

SSM框架实现简单门店管理系统

一、创建数据库 /*Navicat Premium Data TransferSource Server : MySQLSource Server Type : MySQLSource Server Version : 50743Source Host : localhost:3306Source Schema : yongheTarget Server Type : MySQLTarget Server Version : 5…

【C++】内存五大区详解

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

片上网络NoC(5)——非直连拓扑

目录 一、前言 二、概念阐述 三、交叉开关 四、蝶形网络 五、clos网络 六、fat tree网络 6.1 clos网络的折叠过程 七、总结 一、前言 本文继续介绍片上网络的拓扑&#xff0c;在之前的文章中&#xff0c;我们已经介绍了片上网络的拓扑指标和直连拓扑的相关内容&#xf…