题目
这个题正解是贪心 动态规划和线段树也都可以做
于是我用了暴力
#include<iostream>
#include<cstdio>
#include<cctype>
using namespace std;
#define in = read();
typedef long long ll;
typedef unsigned int ui;
const ll size = 1000000 + 1000;
int n , x , y;
int len , leftpoint;
bool a[size];
inline ll read(){
ll num = 0 , f = 1; char ch = getchar();
while(!isdigit(ch)){
if(ch == '-') f = -1;
ch = getchar();
}
while(isdigit(ch)){
num = num*10 + ch - '0';
ch = getchar();
}
return num*f;
}
int main(){
n in;
for(register int i=1;i<=n;i++){
x in; y in;
for(register int i=x+1;i<=y;i++)
a[i] = true;
len = max(len , y);
}
// for(register int i=1;i<=len;i++)cout<<a[i]<<" ";cout<<endl;
for(register int i=1;i<=len;i++)
if(a[i]){
leftpoint = i;
for(register int j=leftpoint;j<=len;j++)
if(!a[j + 1]){
printf("%d %d\n" , leftpoint - 1 , j);
i = j;
break;
}
}
}
//COYG
我们用一个bool数组(a)表示区间 然后没读入一个区间就把该区间的bool值付为1 初始都为0
然后 从第一个开始看 如果当前的a[i]为true 记录一下 然后往后找知道a[i]为false了 就把刚才那一段输出
注意 举个例子吧 加入输入的区间为1 4 那我们要把a[2]a[3]a[4]变成true 为什么画画图就看出来了
竟然水过了 标签就上模拟吧 暴力太难听了