【問題】
在一個數軸上有n條線段,現選取其中kk條線段使得這k條線段兩兩沒有重合部分,問最大的k爲多少?
【輸入】
第一行爲一個正整數n,下面n行每行2個數字ai,bi描述每條線段。
【輸出】
輸出文件僅包括1個整數,爲k的最大值
【思路】
貪心,這裏要注意用scanf和printf,用cin和cout會超時
【源代碼】
#include<bits/stdc++.h>
using namespace std;
#define ll long long
struct line
{
int l;
int r;
} lin[1000000];
int cmp(line x,line y)
{
if(x.r!=y.r)
return x.r<y.r;
else
return x.l<y.l;
}
int main()
{
int n,ans=0;
scanf("%d",&n);
for(int i=0; i<n; i++)
scanf("%d%d",&lin[i].l,&lin[i].r);;
sort(lin,lin+n,cmp);
int start=0;
for(int i=0; i<n; i++)
{
if(lin[i].l>=start)
{
start=lin[i].r;
ans++;
}
}
printf("%d\n",ans);
return 0;
}