首页 > 其他分享 >51nod-1460 连接小岛

51nod-1460 连接小岛

时间:2023-06-12 18:02:58浏览次数:43  
标签:Node 10 node 51nod ll li 小岛 x1 1460


原题链接



1460 连接小岛



题目来源:  CodeForces


基准时间限制:1.5 秒 空间限制:131072 KB 分值: 40  难度:4级算法题



 收藏

 关注

li+1  对于所有的 1 ≤ i ≤ n-1。现在要将相邻的小岛用桥连接起来。现在有一条桥的长度是a,第i个岛和第i+1个岛能够连接的条件是,存在x,y使得 li ≤ x ≤ ri,  li+1 ≤ y ≤ ri+1

现在有m条桥,每条桥最多被使用一次,问能否把这些岛连接起来。

样例解释:在这个样例中,把第2条桥两个端点放在3和8,把第三条桥两个端点放在7和10,把第一条桥的端点放在10和14。



Input


单组测试数据。第一行有两个整数n (2 ≤ n ≤ 2*10^5) 和 m (1 ≤ m ≤ 2*10^5),表示岛的数目和桥的数目。接下来n行,每行有两个整数 li 和 ri (1 ≤ li ≤ ri ≤ 10^18),表示岛的两个端点。接下来一行有m个整数 a1, a2, ..., am (1 ≤ ai ≤ 10^18),表示每一条桥的长度。


Output


如果能够将n座岛连接起来输出YES,否则输出NO。


Input示例


4 41 47 89 10 12 14 4 5 3 8


Output示例


YES

对输入的相邻的两个岛屿,l1, r1, l2,r2生成一个线段[l2-r1, r2-l1]因为有n个岛屿,所以有n-1个线段.先再就是为每个线段配一座桥.

把线段按照右端点从小到达排序,从小到大遍历每个线段l, r, 找到一座桥,其长度>= l && <= r, 并且离l最近,那么就是这个线段的桥

#include <bits/stdc++.h>
#define MOD 1000000007
#define maxn 200005
using namespace std;
typedef long long ll;

struct Node{
	Node(){
	}
	Node(ll a, ll b){
		l = a;
		r = b;
	}
	friend bool operator < (const Node&a, const Node&b){
		return a.r < b.r;
	}
	ll l, r;
}node[maxn];
multiset<ll> s;
int main(){
	//freopen("in.txt", "r", stdin);
	int n, m;
	ll x1, y1, x2, y2;
	scanf("%d%d", &n, &m);
	scanf("%I64d%I64d", &x1, &y1);
	for(int i = 0; i < n-1; i++){
		scanf("%I64d%I64d", &x2, &y2);
		node[i] = Node(x2-y1, y2-x1);
	    x1 = x2;
	    y1 = y2;
	}
	sort(node, node+n-1);
	for(int i = 0; i < m; i++){
		scanf("%I64d", &x1);
		s.insert(x1);
	}
	multiset<ll> ::iterator iter;
	for(int i = 0; i < n - 1; i++){
	    if(s.empty()){
	    	puts("NO");
	    	return 0;
	    }
		iter = s.lower_bound(node[i].l);
		if(iter == s.end() || *iter > node[i].r){
			puts("NO");
			return 0;
		}
		s.erase(iter);
	}
	puts("YES");
	return 0;
}




标签:Node,10,node,51nod,ll,li,小岛,x1,1460
From: https://blog.51cto.com/u_16158872/6464595

相关文章

  • 51nod-1434 区间LCM
    原题链接1434 区间LCM题目来源: TopCoder基准时间限制:1 秒空间限制:131072 KB分值: 40 难度:4级算法题 收藏 关注例如,LCM(2)=2,LCM(4,6)=12,LCM(1,2,3,4,5)=60。现在给定一个整数N(1<=N<=1000000),需要找到......
  • 51nod-1624 取余最长路
    原题链接1624 取余最长路基准时间限制:1 秒空间限制:131072 KB分值: 40 难度:4级算法题 收藏 关注佳佳有一个n*m的带权矩阵,她想从(1,1)出发走到(n,m)且只能往右往下移动,她能得到的娱乐值为所经过的位置的权的总和。有一天,她被下了恶......
  • 51nod-1191 消灭兔子
    原题链接1191 消灭兔子题目来源: 2013腾讯马拉松赛第三场基准时间限制:1 秒空间限制:131072 KB分值: 40 难度:4级算法题 收藏 关注有N只兔子,每只有一个血量B[i],需要用箭杀死免子。有M种不同类型的箭可以选择,每种箭......
  • 51nod-1158 全是1的最大子矩阵(单调栈)
    原题链接1158 全是1的最大子矩阵基准时间限制:1 秒空间限制:131072 KB分值: 80 难度:5级算法题 收藏 关注Input第1行:2个数m,n中间用空格分隔(2 <= m,n <= 500)第2 - N + 1行:每行m个数,中间用空格分隔,均为0或1。......
  • 动态规划基础之矩阵取数问题 51nod1083
    题目地址:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1083题目:1083 矩阵取数问题基准时间限制:1 秒空间限制:131072 KB分值: 5 难度:1级算法题例如:3*3的方格。133213221......
  • 51nod 1298 圆与三角形(基础题,计算几何)
    题目链接:点击打开链接1298 圆与三角形题目来源: HackerRank基准时间限制:1 秒空间限制:131072 KB分值: 0 难度:基础给出圆的圆心和半径,以及三角形的三个顶点,问圆同三角形是否相交。相交输出"Yes",否则输出"No"。(三角形的面积大于0)。Inp......
  • 最大子矩阵和问题 动态规划 51nod1051
    1051 最大子矩阵和基准时间限制:2 秒空间限制:131072 KB分值: 40 难度:4级算法题例如:3*3的矩阵:-13-12-13-312和最大的子矩阵是:3-1-1312Input......
  • 51nod---无法表示的数
    题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1176题意:z=(x/2)取整后+y+xy,x,y都是大于0的整数。即:x,y取不同的数,z可能有多种表示方式,也可能一种都没有,比如3,15就无法用任何x,y来表示。现在将所有无法表示的数排个序,组成一个序列S,给出一个整数n,你来求S[n......
  • 图解LeetCode——1460. 通过翻转子数组使两个数组相等(难度:简单)
    一、题目给你两个长度相同的整数数组 target 和 arr 。每一步中,你可以选择 arr 的任意非空子数组 并将它翻转。你可以执行此过程任意次。如果你能让arr 变得与target 相同,返回True;否则,返回False。二、示例2.1>示例1:【输入】target=[1,2,3,4],arr=[2,4,1,3]......
  • 2022.11.23 51nod 图论专场?
    A反转Dag图:题面给出一个\(n\)个点\(m\)条边的有向图,顶点编号\(1\)到\(n\),边的编号为\(1\)到\(m\)。你可以选择一些边进行反转(即从\(u\)到\(v\)的边反转后变为从\(v\)到\(u\)的边),将每条边反转都需要一定代价。最终使得整个图变成一个\(Dag\)图。总的反......