首页 > 编程语言 >C++题解(17) 狐猬编程: 640.线段覆盖

C++题解(17) 狐猬编程: 640.线段覆盖

时间:2024-07-28 18:28:43浏览次数:14  
标签:10 17 输出 int 题解 线段 C++ 端点 impossible

题目描述

在一条数轴上,有N条线段,第i条线段的左端点是s[i],右端点是e[i]。如果线段有重叠(即使是端点重叠也算是重叠),则输出“impossible”, 如果没有重叠则输出“possible”。

输入格式

输入文件名:640.in

多组测试数据。

第一行,一个整数G,表示有G组测试数据。1 <= G <= 10。

每组测试数据格式如下:

第一行,一个整数N。  1 <= N <= 10。

接下来有N行,每行两个整数:s[i],e[i]。  0<=s[i],e[i]<=1000000。

输出格式

输出文件名:640.out

共G行,每行一个字符串,不含双引号。

输入/输出例子1

输入:

5

3

10 47

100 235

236 347

3

100 235

236 347

10 47

2

10 20

20 30

3

10 20

400000 600000

500000 700000

4

1 1000000

40 41

50 51

60 61

输出:

possible

possible

impossible

impossible

impossible

 解题思路

        我们可以判段前一段右端点是否大于当前这段的左端点,如果是,证明两条线段相交了。

参考答案 

#include <iostream> 
#include <algorithm>
using namespace std;

struct String //string 在这里是 线 的意思
{
	int left;//左端点
	int right;//右端点
}a[11];

bool cmp(String a,String b)//给线段端点排序,方便判断是否相交
{
	return a.right<b.right;
}

int main()
{
	int t,n;
	cin>>t;

	for(int j=1;j<=t;j++)
	{
		cin>>n;

		for(int i=1;i<=n;i++)//输入左、右端点
		{
			cin>>a[i].left>>a[i].right;
		}

		sort(a+1,a+n+1,cmp);

		int l=1;//用来放适合判断的数据位置
		bool f=true;
		for(int i=2;i<=n;i++)
		{
			if(a[l].right<a[i].left)l=i;//更新l
			else //相交了
			{
				f=false;
				break;
			}
		}

		if(f==true)cout<<"possible"<<endl;//没有相交
		else cout<<"impossible"<<endl;//相交了
	}

	return 0;
}

标签:10,17,输出,int,题解,线段,C++,端点,impossible
From: https://blog.csdn.net/2301_78151773/article/details/140753970

相关文章

  • Win11系统下Yolov8的C++编译环境实践
    Date:2024年1月24日概要说明yolo简介及背景    yolo(YouOnlyLookOnce)是目前一种普及性较高的人工智能目标检测方法,它将目标检测任务重新定义为单一的回归问题,从而实现了从图像像素到边界框坐标和类别概率的直接映射。在业界,Yolo的新应用层出不穷,其需求多样变化、源......
  • [题解]ABC364 A~F
    A-GluttonTakahashi给定\(n\)道菜,每道菜要么是甜的(用sweet表示),要么是咸的(用salty表示)。必须按顺序吃,如果连续吃到\(2\)个甜的菜,就会浑身难受吃不下去了。请问是否能吃完这些菜。按题意模拟即可,只要前\(n-1\)个元素中有连续的sweet就输出No。点击查看代码#include<bits/s......
  • CF292D 题解
    \(O(mk\alpha(n))\)暴力,考虑对于每个询问\(l,r\),枚举\(1\siml-1,r+1\simm\),并查集连边即可。1154ms。\(O(n(m+k\alpha(n)))\)我们发现枚举\(i\in[1,l),j\in(r,m]\)太慢了。考虑先预处理出并查集从\(1\)连边到编号为\(id\)的边的状态\(pre_{id}\),倒过来再处理出......
  • LeetCode_sql_day07(579. 查询员工的累计薪水,2173.最多连胜的次数)
    描述:579.查询员工的累计薪水编写一个解决方案,在一个统一的表中计算出每个员工的 累计工资汇总 。员工的 累计工资汇总 可以计算如下:对于该员工工作的每个月,将 该月 和 前两个月 的工资 加 起来。这是他们当月的 3个月总工资和 。如果员工在前几个月没有为公......
  • CF626G Raffles 题解
    Description有\(n\)个奖池,第\(i\)个奖池的奖金是\(p_i\),已经有\(l_i\)张彩票押在上面。现在你有\(t\)张彩票,你需要将你的彩票分配到这些奖池中,并且保证你在每个奖池中押的彩票数不能超过该奖池原有的彩票数。若你在第\(i\)个奖池中押了\(t_i\)张彩票,则你中奖的概......
  • C++ 数据结构体解析
    文章目录1.定义结构体2. 访问结构成员3. 结构作为函数参数4. 指向结构的指针5. typedef关键字1.定义结构体C/C++数组允许定义可存储相同类型数据项的变量,但是结构是C++中另一种用户自定义的可用的数据类型,它允许存储不同类型的数据项。结构用于表示一条记......
  • C++和R穿刺针吸活检肿瘤算法模型模拟和进化动力学量化差异模型
    ......
  • C++自学笔记29(多维数组)
    我们在之前的笔记中知道数组解决了重复变量的赋值问题,也知道数组就是指针可以用指针的方式修改内容。现在有一个数组对50个变量赋值a[50],我们有50个这样的数组a[50][50],对于这样的数组我们还有50个a[50][50][50]。这就是一维数组、二维数组、三维数组......我们拿堆上建立......
  • C++自学笔记30(类型双关)
    上栗子#include<iostream>intmian(){inta=50;doublever=a;std::cout<<ver<<std::endl;std::cin.get();}a是一个占据4字节的数据,将a复制给ver并转换为double8个字节。这其中就是隐式的类型转换。第一个是int类型的50,第二个是类型转换后的......
  • AtCoder Beginner Contest 363 题解 A-D(待补充)
    A-PilingUp1.1思路其实就是向上取百位的整,需要增加多少,123则为200-123=177;1.2代码voidsolve(){intn;cin>>n;intt=n/100;cout<<(t+1)*100-n;}B-JapaneseCursedDoll 2.1思路就是判断最少需要多少天,会有大于等于P个人......