当前位置: 首页 > news >正文

区间合并笔记

文章目录

  • 什么是区间合并
  • 怎么做区间合并
  • AcWing 803. 区间合并
    • 思路解析
    • my - CODE
    • dalao の CODE



什么是区间合并

区间合并是指给定多个区间,让你将重合的区间合并为一个区间


怎么做区间合并

区间合并类问题大多三个办法:

  • 按左端点排序
  • 按右端点排序
  • 按左右端点双值排序

AcWing 803. 区间合并

题目链接:https://www.acwing.com/activity/content/problem/content/837/
区间和

思路解析

  • 我们按左端点大小将区间排序,排完序后从每个区间左端点开始遍历,我们会发现有三种情况
    • B区间在A
    • C区间有一部分与A重合
    • D区间在A
      三种情况
  • 我们的思路很明了了,通过两个指针:st(start),ed(end) 来标记我们正在维护的A数组的左右端点,往后遍历,处理三种情况
    • 如果遇到B:左端点不动,右端点也不动
    • 如果遇到C:左端点不动,右端点更新为C的右端点,也就是将A,C区间合并了
    • 如果遇到D:左右端点更新为D的左右端点,相当于现在改为维护D区间

my - CODE

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>using namespace std;typedef pair<int, int> pii;vector<pii> segs;			// 存储区间左右端点int main()
{int n, l, r;int ans = 0;cin >> n;while (n -- ){scanf("%d%d", &l, &r);segs.push_back({l, r});}sort(segs.begin(), segs.end());		// 以左端点优先排序int st = -1e9 - 1, ed = -1e9 - 1;	// 一开始的区间初始化为一个不可能的区间for(auto seg : segs){if(seg.first <= ed) ed = max(ed, seg.second);	// 有重合,右端点取最大else{			// 无重合,更新维护的区间ans++;st = seg.first;ed = seg.second;}}cout << ans << endl;
}

dalao の CODE

#include <iostream>
#include <vector>
#include <algorithm>using namespace std;typedef pair<int, int> PII;void merge(vector<PII> &segs)
{vector<PII> res;sort(segs.begin(), segs.end());int st = -2e9, ed = -2e9;for (auto seg : segs)if (ed < seg.first){if (st != -2e9) res.push_back({st, ed});st = seg.first, ed = seg.second;}else ed = max(ed, seg.second);if (st != -2e9) res.push_back({st, ed});segs = res;
}int main()
{int n;scanf("%d", &n);vector<PII> segs;for (int i = 0; i < n; i ++ ){int l, r;scanf("%d%d", &l, &r);segs.push_back({l, r});}merge(segs);cout << segs.size() << endl;return 0;
}作者:yxc
链接:https://www.acwing.com/activity/content/code/content/40108/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • dalao将合并统计区间的过程抽出来单独写了个merge()函数,复用性和可读性更强
  • 而且将合并后的区间按秩存入了一个res空间,对于本题可能没有卵用,但是在其他区间合并问题中可能会用到合并后的区间
  • 不愧是dalao啊,orz %%%%%%

相关文章:

区间合并笔记

文章目录 什么是区间合并怎么做区间合并AcWing 803. 区间合并思路解析my - CODEdalao の CODE 什么是区间合并 区间合并是指给定多个区间&#xff0c;让你将重合的区间合并为一个区间 怎么做区间合并 区间合并类问题大多三个办法&#xff1a; 按左端点排序按右端点排序按左右…...

青少年CTF之PHP特性练习(1-5)

青少年CTF-PHP特性练习 文章目录 青少年CTF-PHP特性练习PHP特性01PHP特性02PHP特性03PHP特性04PHP特性05 PHP特性01 看给出的源码&#xff0c;两个变量的值加密后的MD5相同 <?php$s1 "%af%13%76%70%82%a0%a6%58%cb%3e%23%38%c4%c6%db%8b%60%2c%bb%90%68%a0%2d%e9%47…...

《opencv实用探索·七》一文看懂图像卷积运算

1、图像卷积使用场景 图像卷积是图像处理中的一种常用的算法&#xff0c;它是一种基本的滤波技术&#xff0c;通过卷积核&#xff08;也称为滤波器&#xff09;对图像进行操作&#xff0c;使用场景如下&#xff1a; 模糊&#xff08;Blur&#xff09;&#xff1a; 使用加权平…...

RPA机器人如何确保敏感数据的安全性

数据资源作为数字化时代的关键要素&#xff0c;其重要性一直受到高度重视&#xff0c;由此&#xff0c;数据安全也成为企业和个人必须面对的重要问题。随着RPA技术在各个行业的广泛应用&#xff0c;其系统安全性也成了每个企业关注的重中之重。经验丰富的RPA专家可以有效地采取…...

微信号被封了怎么办

13-7 常在河边走&#xff0c;哪有不湿鞋&#xff0c;做为经常用微信做电商客服的&#xff0c;或者经常在微信上和顾客谈钱的&#xff0c;总是会被微信后台重点关注&#xff0c;一不小心就有可能被封号。 如果遇到太倒霉的时候&#xff0c;永久封号了&#xff0c;这个时候微信…...

关于 ls -s 输出文件大小的单位问题的讨论

自己看书正好看到这里&#xff0c;正纳闷呢&#xff0c;上网查了下&#xff0c;发现不是我自己在为这个问题感到困惑。 有个大哥提出一个问题&#xff1a; 问题标题&#xff1a; ls -s的单位到底是什么&#xff1f; man ls -s, --size print the alloca…...

JSON.stringify方法详解 后端接受JSON数据格式

1、方法定义&#xff1a;JSON.stringify(value, replacer, space) 参数说明&#xff1a; value&#xff1a;js对象 replacer&#xff1a;替换对象&#xff0c;可以是一个方法、对象或数组&#xff0c;将value按照替换规则展示。 space&#xff1a;填充参数&#xff0c;可以是数…...

vue请求如何按顺序执行

我们有时候会碰到这种情况&#xff0c;需要连续发送两个请求&#xff0c;第二个请求需要用第一个请求的某个返回值作为参数来作为第二个请求的请求参数。 但是存在一个问题&#xff1a;两个请求都是异步的&#xff0c;他并不按照我们期望的先后顺序来执行。 这时候就需要控制请…...

【java】编译时bug 项目启动前bug合集

文章目录 1. jdk8中 Optional orElseThrow 编译时报错java: 未报告的异常错误X; 必须对其进行捕获或声明以便抛出2. 启动项目时提示 Error running Application: Command line is too long. Shorten command line for Application or also for Spring Boot default configurati…...

Pytorch——多卡GPU训练与单卡GPU训练相互切换

部分深度学习网络默认是多卡并行训练的&#xff0c;由于某些原因&#xff0c;有时需要指定在某单卡上训练&#xff0c;最近遇到一个&#xff0c;这里总结如下。 目录 一、多卡训练1.1 修改配置文件1.2 修改主训练文件1.3 显卡使用情况 二、单卡训练2.1 修改配置文件2.2 显卡使…...

Github项目-CNNResnet9-残差神经网络水果多分类项目

ResNet-论文全文完整翻译注解 - 知乎 你必须要知道CNN模型&#xff1a;ResNet - 知乎 #!/usr/bin/env python # coding: utf-8 #https://github.com/SehajS/cnn-resnet-fruit-classification # # Classifying Fruits from their Images # # This project aims at creating a…...

学习感悟一己之言

学习感悟一己之言 学习上克服困难实际上是克服心理上或认识上的障碍的过程。所谓的理解&#xff0c;就是化陌生为熟悉。看不懂&#xff0c;一方面是因为接触的材料太陌生&#xff0c;即远离你当前的背景知识&#xff1b;另一方面是材料或讲述者的描述刻画不准确或晦涩不当。有了…...

【设计模式-2.3】创建型——原型模式

说明&#xff1a;本文介绍设计模式中&#xff0c;创建型中的原型模式&#xff1b; 飞机大战 创建型设计模式关注于对象的创建&#xff0c;原型模式也不例外。如简单工厂和工厂模式中提到过的飞机大战这个例子&#xff0c;游戏中飞机、坦克对象会创建许许多多的实例&#xff0…...

八大插入算法(有注释)

直接插入排序 //直接插入排序 void InsertSortingDirectly(int* nums,int numsSize){int j0;for(int i1;i<numsSize-1;i){//定义一个中间变量保存当前要插入的值int tempnums[i];//在前面已排好序的序列中&#xff0c;找到合适的位置插入for(ji-1;j>0;j--){if(nums[j]&g…...

【2】基于多设计模式下的同步异步日志系统

6. 相关技术知识补充 6.1 不定参函数 在初学C语⾔的时候&#xff0c;我们都⽤过printf函数进⾏打印。其中printf函数就是⼀个不定参函数&#xff0c;在函数内部可以根据格式化字符串中格式化字符分别获取不同的参数进⾏数据的格式化。 ⽽这种不定参函数在实际的使⽤中也⾮常…...

npm管理发布包-创建与发布

创建与发布 我们可以将自己开发的工具包发布到 npm 服务上&#xff0c;方便自己和其他开发者使用&#xff0c;操作步骤如下 创建文件夹&#xff0c;并创建文件indexjs&#xff0c;在文件中声明函数&#xff0c;使用 module.exports 暴露npm初始化工具包&#xff0c;package.j…...

基于Spring,SpringMVC,MyBatis的校园二手交易网站

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于Spring,SpringMVC,MyBatis的校园二…...

酒店 KPI绩效考核指标及应用

“路遥知马力&#xff0c;日久见人心”&#xff0c;目前国内各类型酒店风起云涌&#xff0c;大有在市场竞争中一比高下之势&#xff0c;各路精英受经济型酒店低投入高回报的市场利益驱动&#xff0c;都分分抢占市场&#xff0c;从而使国内经济型酒店的数量不断增加&#xff0c;…...

WordPress两种方法实现上传媒体图片文件自动重命名

我们发布文章时&#xff0c;会上传一些图片、音频之类的文件。但是WordPress没有自动 给新上传文件重命名的功能&#xff0c;逐个文件去重命名那就太麻烦了&#xff0c;那么我们改如何自动给上传的媒体文件图片重命名呢&#xff1f; 我在网站搜索了些上WordPress上传媒体文件自…...

TZOJ 1405 An easy problem

翻译有些出错&#xff0c;但大概是那个意思 答案&#xff1a; #include <stdio.h> #include <ctype.h> //引用库函数isupper的头文件int main() {int T 0, i 0;scanf("%d", &T); //要输入的行数while (T--) //循环T次{char c;int y 0…...

TPU加速GAN训练实战:从设备配置到FID达标完整指南

1. 项目概述&#xff1a;为什么用TPU跑GAN不是“炫技”&#xff0c;而是解决实际瓶颈的刚需你有没有在Kaggle或Colab上训练过DCGAN、StyleGAN2或者哪怕一个简化版的WGAN&#xff1f;我试过——在单块P100 GPU上跑一个6464分辨率的生成器&#xff0c;50个epoch要花3小时17分钟&a…...

N_m3u8DL-CLI-SimpleG:一键下载M3U8视频的终极图形界面工具

N_m3u8DL-CLI-SimpleG&#xff1a;一键下载M3U8视频的终极图形界面工具 【免费下载链接】N_m3u8DL-CLI-SimpleG N_m3u8DL-CLIs simple GUI 项目地址: https://gitcode.com/gh_mirrors/nm3/N_m3u8DL-CLI-SimpleG 你是否曾经想要保存在线视频却因为复杂的M3U8格式而束手无…...

STL专题三:list(2,关于list的若干问题)

1 迭代器细节问题大家可暂时将迭代器理解成一个指针&#xff0c;该指针指向list中的某个节点。在list中进行插入时是不会导致list的迭代器失效的&#xff0c;只有在删除时才会失效&#xff0c;并且失效的只是指向被删除节点的迭代器&#xff0c;其他迭代器不会受到影响。一个容…...

Unity动态设置Layer与摄像机屏蔽的完整闭环方案

1. 这不是“加个Layer”那么简单&#xff1a;为什么动态设置Layer常被误用却没人深究在Unity项目里&#xff0c;我见过太多人把“给GameObject动态设置Layer”当成一个随手就能调用的API——go.layer 12;&#xff0c;敲完回车&#xff0c;心里就默认“好了”。结果跑起来发现&…...

终极指南:如何用WeChatLuckyMoney轻松实现微信红包自动抢

终极指南&#xff1a;如何用WeChatLuckyMoney轻松实现微信红包自动抢 【免费下载链接】WeChatLuckyMoney :money_with_wings: WeChats lucky money helper (微信抢红包插件) by Zhongyi Tong. An Android app that helps you snatch red packets in WeChat groups. 项目地址…...

如何做好费用率数据分析?巧用费用率研判企业盈利现状

企业经营发展过程中&#xff0c;盈利水平高低直接决定长远发展实力&#xff0c;而费用率数据是看透企业真实盈利水平最直观、最核心的指标。很多经营者在日常管理中&#xff0c;往往只看重账面营收的增长&#xff0c;却忽略了费用率数据的深层分析与解读&#xff0c;最终出现营…...

Neuralink脑机接口技术解析:从医疗应用到人机共生

1. 项目概述&#xff1a;从科幻到现实的神经接口革命最近几年&#xff0c;一个名字频繁出现在科技和医疗的交叉领域&#xff0c;引发无数讨论与遐想——Neuralink。这不仅仅是一家公司的名字&#xff0c;它更像是一个时代的符号&#xff0c;代表着人类试图用最前沿的工程技术&a…...

Medium作者收益预测模型:轻量可解释的写作价值评估系统

1. 项目概述&#xff1a;这不是一个“预测收入”的模型&#xff0c;而是一套写作者价值评估系统你点开这个标题&#xff0c;第一反应可能是&#xff1a;“哦&#xff0c;又一个用机器学习算稿费的工具&#xff1f;”——但实际远不止如此。Medium writer earnings&#xff08;M…...

11.三层网络VXLAN

先把之前基于flat模式创建的虚机&#xff0c;全部删除 控制节点配置&#xff1a;1.修改配置文件/etc/neutron/neutron.conf 将[DEFAULT]区域 core_plugin ml2 service_plugins 修改为 core_plugin ml2 service_plugins router allow_overlapping_ips True2.修改/etc/neutro…...

第2章:文档加载与智能分块——RAG的第一步

本章你将收获:支持PDF(含表格)、Word、Markdown、网页、CSV等10+格式的完整加载代码;五种分块策略的深度对比(固定大小、递归字符、语义、文档结构、按标题);元数据保留与增强的工程方法;处理100页混合格式技术手册的完整实战;以及分块参数调优的最佳实践。 📌 本章…...