翻译
现在有一个数轴,上面会有\(M\)个点,标号为\(1\)到\(N\),现在给你在数轴上的条\(N\)线段的起始与终止的点,问哪几个点没有被这样线段覆盖,从小到大输出。
思路
签到题目。感觉几乎和一道题一样:校门外的树,撞题是很尴尬。思路差不多,即为开一个数组,全部赋值为\(0\),输入的线段的时候,将其起点与终点的全部的点赋值为\(1\),最后跑一下看看那些为\(0\)的点就完事了。
Code
#include<iostream>
using namespace std;
int book[1001];//默认为0
int main()
{
int n,k,t=0;
cin>>n>>k;
for(int i=1;i<=n;i++)
{
int a,b;
cin>>a>>b;
for(int j=a;j<=b;j++)//标记线段的区间
book[j]=1;
}
for(int i=1;i<=k;i++)
if(book[i]==0)//0即为没有覆盖
t++;
cout<<t<<endl;
for(int i=1;i<=k;i++)
if(book[i]==0)
cout<<i<<" ";
return 0;
}
原文地址:https://www.cnblogs.com/lyfoi/p/9485072.html
时间: 2024-11-08 19:01:52