群岛大战(C++)

这篇具有很好参考价值的文章主要介绍了群岛大战(C++)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

英文题目:

Problem Statement

There are N N N islands lining up from west to east, connected by N − 1 N−1 N1 bridges.

The i − t h i-th ith bridge connects the i − t h i-th ith island from the west and the ( i + 1 ) − t h (i+1)-th (i+1)th island from the west.

One day, disputes took place between some islands, and there were M requests from the inhabitants of the islands:

Request i i i: A dispute took place between the a i − t h a_i-th aith island from the west and the b i − t h b_i-th bith island from the west. Please make traveling between these islands with bridges impossible.

You decided to remove some bridges to meet all these M M M requests.

Find the minimum number of bridges that must be removed.

Constraints

All values in input are integers.
2 ≤ N ≤ 1 0 5 2 \leq N \leq 10^5 2N105
1 ≤ M ≤ 1 0 5 1 \leq M \leq 10^5 1M105
1 ≤ a i < b i ≤ N 1 \leq a_i < b_i \leq N 1ai<biN
All pairs ( a i , b i ) (a_i, b_i) (ai,bi) are distinct.

Input

Input is given from Standard Input in the following format:

N M N M NM
a 1 a_1 a1 b 1 b_1 b1
a 2 a_2 a2 b 2 b_2 b2
: : :
a M a_M aM b M b_M bM

Output

Print the minimum number of bridges that must be removed.

Sample 1

Input

5 2
1 4
2 5

Output

1

The requests can be met by removing the bridge connecting the second and third islands from the west.

Sample 2

Input

9 5
1 8
2 7
3 5
4 6
7 9

Output

2

Sample 3

Input

5 10
1 2
1 3
1 4
1 5
2 3
2 4
2 5
3 4
3 5
4 5

Output

4文章来源地址https://www.toymoban.com/news/detail-451775.html

中文题目:

问题陈述

这里有 N N N岛屿,从西向东排列,由 N − 1 N−1 N1桥梁连接。

i − t h i-th ith桥连接了西面的 i − t h i-th ith岛和西面的 ( i + 1 ) − t h (i+1)-th (i+1)th岛。

一天,一些岛屿之间发生了争端,岛上的居民提出了M个请求:

请求 i i i:在西面的 a i − t h a_i-th aith岛和西面的 b i − t h b_i-th bith岛之间发生了争端。请不要在这些岛屿之间搭桥。

您决定删除一些桥以满足所有这些 M M M请求。

找出必须拆除的桥的最小数量。

约束

输入中的所有值都是整数。
2 ≤ N ≤ 1 0 5 2 \leq N \leq 10^5 2N105
1 ≤ M ≤ 1 0 5 1 \leq M \leq 10^5 1M105
1 ≤ a i < b i ≤ N 1 \leq a_i < b_i \leq N 1ai<biN
所有对 ( a i , b i ) (a_i, b_i) (ai,bi)都是不同的。
##输入
标准输入的输入格式如下:

N M N M NM
a 1 a_1 a1 b 1 b_1 b1
a 2 a_2 a2 b 2 b_2 b2
: : :
a M a_M aM b M b_M bM

输出

打印必须移除的桥的最小数量。

样本1

输入

5 2
14
2 5

输出

1

通过拆除连接西部第二和第三岛屿的桥梁,可以满足这些要求。

样本2

输入

9 5
18
27
3 5
4 6
7 9

输出

2

示例3

输入

5 10
1 2
1 3
14
15
2 3
2 4
2 5
3 4
3 5
4 5

输出

4

代码

#include<bits/stdc++.h>
using namespace std;
struct node{int x,y; } a[1200000];
int n,m,s,mi; 
bool cmp(node a,node b)
{
	if(a.y==b.y)
		return a.x<b.x;
	return a.y<b.y;
}
int main() 
{
	cin >>n >>m;
	for (int i=1;i<=m;i++)
	{
		cin >>a[i].x >>a[i].y;
		mi=min(mi,a[i].y);
	}
	sort(a+1,a+m+1,cmp);
	for(int i=1;i<=m;i++)
	{
		if(a[i].x>=mi)
		{
			s++;
			mi=a[i].y;
		}
	}
	cout <<s;
	return 0;
}

到了这里,关于群岛大战(C++)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++飞机大战(注释较多,新手可读懂,附全代码)

      学了c++,总想用c++写点东西,便想到了飞机大战,话不多说,直接开始写!!         这个不用多说~直接上代码         这个我也不用多说了~直接手绘!         要移动,至少得写个清屏函数吧……         那还得输出地图         首先,你得先让子弹出现  之

    2024年02月05日
    浏览(49)
  • C语言、c++实现超好玩植物大战僵尸(完整版附源码)

    实现这个游戏需要Easy_X 效果图

    2024年03月24日
    浏览(51)
  • iOS_灵动岛<Dynamic Island>

    苹果在 iPhone 14 Pro 及 iPhone 14 Pro MAX 上推出了灵动岛。灵动岛可以通过点按、长按、轻扫来进行交互,最多支持两个应用同时“登岛”。 灵动岛全称 Dynamic Island,作为 iOS 中实时活动(Live Activities)功能的一部分,用来展示需要实时更新的消息。 展现形式 展现形式有三种:

    2024年02月12日
    浏览(35)
  • 【学习笔记】CF627F Island Puzzle

    好啊,树上贪心题。 首先可以用类似于拓扑排序的过程将无用的节点全部删掉。 具体的,如果两个叶子节点对应的值恰好相同,那么同时将叶子节点删去;如果其中一个叶子节点对应的是 0 0 0 ,并且与父节点交换后相同,因为操作是可逆的,那么花费 1 1 1 的代价将 0 0 0 往

    2024年02月02日
    浏览(42)
  • 如何识别手机是否有灵动岛(dynamic island)

    如何识别手机是否有灵动岛(dynamic island) 灵动岛是苹果2022年9月推出的iPhone 14 Pro、iPhone 14 Pro Max首次出现,操作系统最低是iOS16.0。带灵动岛的手机在竖屏时顶部工具栏大于等于51像素。

    2024年02月14日
    浏览(39)
  • 【C++】std::thread的英文资料整理

    2023年9月10日,周日上午 这篇博客是我对网上的英文资料的整理和翻译 英文资料来自: c++ - What exactly is an std::thread? - Stack Overflow When you create a std::thread (assuming you don\\\'t use the default constructor), the constructor will use the operating system API to create a native thread, and calls the passed function. 当你

    2024年02月09日
    浏览(43)
  • UE4运用C++和框架开发坦克大战教程笔记(十四)(第43~45集)

    继续来补充根据资源类型生成资源的逻辑,在 DDWealth 里添加获取 URL 的方法。 DDWealth.h DDWealth.cpp 建立 DDWealth – DDModule – DDOO – 对象 的调用链。 DDModule.h DDModule.cpp DDOO.h DDOO.cpp 如果编译通过则说明写好了,现在所有的对象都可以通过这两个方法获取目标资源的 URL。刚刚写的

    2024年02月03日
    浏览(46)
  • UE4运用C++和框架开发坦克大战教程笔记(十一)(第34~36集)

    我们前面已经在一个类里面实现了一套可行的协程系统,接下来我们需要通过宏来将它们变得更加方便可用,不必每次都写这么多代码。 将 CoroActor 头文件里的委托声明语句以及两个结构体全复制到 DDTypes 下,改成通用的结构。下面只列出需要更改的代码。 DDTypes.h 来到 Cor

    2024年02月03日
    浏览(36)
  • UE4运用C++和框架开发坦克大战教程笔记(十二)(第37~39集)

    由于梁迪老师是写 Unity 游戏出身的,所以即便 UE4 有自带的 TimeManager 这样的延时系统,老师还是重新写了一个符合 Unity 开发习惯的延时系统。 在 DDTypes 里定义延时任务结构体,以及它要用到的一个委托。 DDTypes.h 我们依旧将延时系统放在 DDMessage 这里。 协程系统和延时系统

    2024年02月02日
    浏览(46)
  • UE4运用C++和框架开发坦克大战教程笔记(十五)(第46~48集)

    逻辑和批量加载同类 UObject 资源的逻辑差不多。区别在 DealClassKindLoadStack() 内,如果已经有资源率先加载完成了,那后续资源加载的途中我们想让已经加载好的资源执行额外的处理逻辑(比如让它每帧生成),我们就需要补充额外的判断条件,即判断其是否第一次生成完毕。

    2024年01月25日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包