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

洛谷U525376 信号干扰 (判断多个区间是否有重叠)

U525376信号干扰

题目描述

n n n 座信号塔,第 i i i 座信号塔的信号将覆盖区间 [ l i , r i ] [l_i,r_i] [li,ri]

若某个点被超过一座信号塔的信号覆盖,则在该点会产生信号干扰。

对于信号塔区间 [ a , b ] [a,b] [a,b],若建造这些信号塔不会产生信号干扰,则称其为无干扰区间。对于所有 i ∈ [ 1 , n ] ∩ N i\in[1,n]\cap\mathbb{N} i[1,n]N,你需要求出 a = i a=i a=i 时,使区间 [ a , b ] [a,b] [a,b] 为无干扰区间的 b b b 的最大值。

输入格式

第一行一个正整数 n n n,表示信号塔数量。

接下来 n n n 行,每行两个正整数 l i , r i l_i,r_i li,ri,表示信号塔的信号范围。

输出格式

输出一行 n n n 个整数,第 i i i 个正整数表示当 a = i a=i a=i 时,使区间 [ a , b ] [a,b] [a,b] 为无干扰区间的 b b b 的最大值。

样例 #1

样例输入 #1

7
1 1
1 1000
1 3
3 3
4 6
2 3
1 1

样例输出 #1

1 2 3 5 7 7 7

提示

1 ≤ n ≤ 2 × 1 0 5 1\le n\le2\times10^5 1n2×105 1 ≤ l i ≤ r i ≤ 1 0 9 1\le l_i\le r_i\le10^9 1liri109

在本题中,约定区间的左右端点可以相等。

思路

定义结构体node储存区间,重载bool operator<(const nd& other)const{return r<other.l;}
然后用一个set<node>存区间,区间在其中自动排序,对于一个新区间aset中的区间都不重合,则有s.find(a) == s.end() 成立,否则说明aset中存的区间有重合部分。
原理大概是:如果b是与set中与a有重合部分的最左侧的区间,那么find在判断时会发现a不小于b,b不小于a,则认为a等于b,即找到目标,就会返回b的迭代器而不是end();

代码:

#include <bits/stdc++.h>
#define endl '\n'
#define int long long
typedef long long ll;
using namespace std;struct nd{int l,r;nd(int L=0,int R=0){l=L,r=R;}bool operator<(const nd& other)const{return r<other.l;}
}a[200005];
set<nd> s;signed main() {cin.tie(0)->ios::sync_with_stdio(0);int n;cin>>n;for(int i=1;i<=n;i++){int l,r;cin>>l>>r;a[i]=nd(l,r);}int cnt = 0;for(int i=1;i<=n;i++){while(cnt<n && s.find(a[cnt+1]) == s.end()){s.insert(a[cnt+1]);cnt++;}cout<<cnt<<" ";s.erase(a[i]);}return 0;
}
http://www.lryc.cn/news/527975.html

相关文章:

  • ESP32-S3模组上跑通esp32-camera(35)
  • Java进阶(二):Java设计模式
  • DeepSeek R1:中国AI黑马的崛起与挑战
  • 抗体人源化服务如何优化药物的分子结构【卡梅德生物】
  • AndroidCompose Navigation导航精通2-过渡动画与路由切换
  • 基于微信小程序的社团活动助手php+论文源码调试讲解
  • WebSocket 详解:全双工通信的实现与应用
  • 漏洞修复:Apache Tomcat 安全漏洞(CVE-2024-50379) | Apache Tomcat 安全漏洞(CVE-2024-52318)
  • 智慧园区系统分类及其在提升企业管理效率中的创新应用探讨
  • 29. 【.NET 8 实战--孢子记账--从单体到微服务】--项目发布
  • Langchain+讯飞星火大模型Spark Max调用
  • TensorFlow实现逻辑回归模型
  • C++进阶课程第2期——排列与组合1
  • C++17 std::variant 详解:概念、用法和实现细节
  • Leetcode::119. 杨辉三角 II
  • 多模态论文笔记——TECO
  • Ubuntu 16.04用APT安装MySQL
  • Linux 4.19内核中的内存管理:x86_64架构下的实现与源码解析
  • JavaScript逆向高阶指南:突破基础,掌握核心逆向技术
  • 嵌入式知识点总结 Linux驱动 (四)-中断-软硬中断-上下半部-中断响应
  • 在ubuntu下一键安装 Open WebUI
  • c语言网 1127 尼科彻斯定理
  • Cloudflare通过代理服务器绕过 CORS 限制:原理、实现场景解析
  • 吴恩达深度学习——如何实现神经网络
  • 《STL基础之vector、list、deque》
  • LockSupport概述、阻塞方法park、唤醒方法unpark(thread)、解决的痛点、带来的面试题
  • Android开发基础知识
  • C++ Lambda 表达式的本质及原理分析
  • 《多线程基础之条件变量》
  • 21款炫酷烟花合集