AcWing 803. 区间合并
网址 https://www.acwing.com/solution/AcWing/content/1590/
题目描述
给定n个区间[l, r]。
合并所有有交集的区间。
输出合并完成后的区间个数。
例如:[1,3]和[2,6]可以合并为一个区间[1,6]。
输入格式
第一行包含整数n。
接下来n行,每行包含两个整数 l 和 r。
输出格式
共一行,包含一个整数,表示合并区间完成后的区间个数。
样例
输入样例:
5
1 2
2 4
5 6
7 8
7 9
输出样例:
3
算法1
(暴力模拟) O(n2)O(n2)
模版题么 简单暴力模拟
抛开输入输出不说
判断 各个区间是否重合
主要是四种情况
1 A区间的起点在B区间的起点终点之间 Bstart Astart Bend Aend
2 A区间起点终点在B区间的起点终点之间 Bstart Astart Aend Bend
反之亦然
3 B区间的起点在A区间的起点终点之间 Astart Bstart Aend Bend
4 B区间起点终点在A区间的起点终点之间 Astart Bstart Bend Aend
但是代码可以归为两种情况判断
int s1 = vp[i].first;
int e1 = vp[i].second;
int s2 = vp[j].first;
int e2 = vp[j].second;
if( (s1>= s2 && s1<= e2) || (s2 >=s1 && s2 <= e1) ){
}
然后进行合并
两者区间合并后就是 起点是两者起点的最小值 终点是两者终点的最大值
代码
merges = min(s1,s2);
mergee = max(e1,e2);
vp[j].first = merges;
vp[j].second = mergee;
#include <iostream>
#include <vector>
#include <algorithm> using namespace std; int T;
const int N= ;
vector<pair<int,int>> vp(N,pair<int,int>(-,-)); int Merge(int i,int j)
{
int s1 = vp[i].first;
int e1 = vp[i].second; int s2 = vp[j].first;
int e2 = vp[j].second; int merges = ;int mergee= ; if( (s1>= s2 && s1<= e2) || (s2 >=s1 && s2 <= e1) ){
merges = min(s1,s2);
mergee = max(e1,e2); vp[j].first = merges;
vp[j].second = mergee;
return ;
} return ;
} int main()
{
cin >> T; for(int i = ;i <= T ;i ++){
cin >> vp[i].first; cin >> vp[i].second;
}
int mergeCount =;
for(int i = ; i <= T;i++){
for(int j = i+;j<= T;j++){
//比较 i j
int res = Merge(i,j);
if(res){
mergeCount++;
break;
}
}
} cout << T - mergeCount << endl; return ;
} 作者:defddr
链接:https://www.acwing.com/solution/AcWing/content/1590/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
AcWing 803. 区间合并的更多相关文章
- Acwing‘803. 区间合并
(https://www.acwing.com/problem/content/805/) 给定 nn 个区间 [li,ri][li,ri],要求合并所有有交集的区间. 注意如果在端点处相交,也算有交 ...
- AcWing 803. 区间合并
#include <iostream> #include <vector> #include <algorithm> using namespace std; ty ...
- POJ 3667 Hotel(线段树 区间合并)
Hotel 转载自:http://www.cnblogs.com/scau20110726/archive/2013/05/07/3065418.html [题目链接]Hotel [题目类型]线段树 ...
- HDU 3911 线段树区间合并、异或取反操作
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3911 线段树区间合并的题目,解释一下代码中声明数组的作用: m1是区间内连续1的最长长度,m0是区间内连续 ...
- HDU 1540 Tunnel Warfare 平衡树 / 线段树:单点更新,区间合并
Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others) Memory Lim ...
- HDU 3911 Black And White(线段树区间合并+lazy操作)
开始以为是水题,结果...... 给你一些只有两种颜色的石头,0为白色,1为黑色. 然后两个操作: 1 l r 将[ l , r ]内的颜色取反 0 l r 计算[ l , r ]内最长连续黑色石头的 ...
- POJ 2750 Potted Flower (线段树区间合并)
开始懵逼找不到解法,看了网上大牛们的题解才发现是区间合并... 给你n个数形成一个数列环,然后每次进行一个点的修改,并输出这个数列的最大区间和(注意是环,并且区间最大只有n-1个数) 其实只需要维护 ...
- ACM: Hotel 解题报告 - 线段树-区间合并
Hotel Time Limit:3000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu Description The ...
- HDU 1540 Tunnel Warfare(线段树+区间合并)
http://acm.hdu.edu.cn/showproblem.php?pid=1540 题目大意:抗日战争期间进行地道战,存在n个村庄用地道连接,输入D表示破坏某个村庄(摧毁与其相连的地道, 包 ...
随机推荐
- MongoDB(四):数据类型、插入文档、查询文档
1. 数据类型 MongoDB支持许多数据类型. 字符串 - 这是用于存储数据的最常用的数据类型.MongoDB中的字符串必须为UTF-8. 整型 - 此类型用于存储数值. 整数可以是32位或64位, ...
- Electron npm install 常见错误(Windows)
问题一:node_gyp使用版本不对 if not defined npm_config_node_gyp (node "C:\Users\Administrator\AppData\Roa ...
- C lang:Definition function
Ax_note in parameter for show_n_char() is formal parameter Aa_Definition function #include <stdio ...
- Hackme: 1: Vulnhub Walkthrough
下载链接: https://www.vulnhub.com/entry/hackme-1,330/ 网络扫描探测: ╰─ nmap -p1-65535 -sV -A 10.10.202.131 22/ ...
- 更改Android studio中SDK,AVD的默认路径
对于大部分首次下载android studio开发android的人来说, 由于Android Studio将会默认把SDK,AVD下载到我们的C盘,造成大量内存的占用,那么如何更改SDK,AVD的路 ...
- SVN安装及其汉化
1.百度搜索SVN,点击官网进去 2.点击download进入下载页面,选择合适的安装包 3.当前页面往下拉,看到汉化包下载页面,要注意版本 4.2个下载完,先安装软件在安装汉化包,要注意软件和汉化包 ...
- python 基础学习笔记(7)--迭送器
**函数名的运用** - [ ] 函数名是一个变量, 但它是一个特殊的变量, 与括号配合可以执行函数的变量 **函数名的内存地址** ``` def func(): print('666') p ...
- socket简单介绍
一 三种类型的套接字: 1.流式套接字(SOCKET_STREAM) 提供面向连接的可靠的数据传输服务.数据被看作是字节流,无长度限制.例如FTP协议就采用这种. 2.数据报式套接字(SOCK ...
- OS X 下 OpenGL 4.x 环境配置
配置: OS X 10.10 + CMake 3.2.2 + GLFW 3.1.1 + OpenGL 4.1 + Xcode 6.0 本文主要介绍如何在 OS X 系统下进行环境配置,使得 Xcode ...
- OpenGL 之 Compute Shader(通用计算并行加速)
平常我们使用的Shader有顶点着色器.几何着色器.片段着色器,这几个都是为光栅化图形渲染服务的,OpenGL 4.3之后新出了一个Compute Shader,用于通用计算并行加速,现在对其进行介绍 ...