タイトル説明
主要なOJ上の競争のn個の数、各ゲームの始まりがありますが、時間の終点は知ることです。
yyyは、より多くのゲームに参加するために、考えて、NOIPは、より良い(偽)をテストすることができるようになります
彼はいくつかの競技会まで参加できるのであれば、彼は疑問に思いました。
yyyはこんにゃくですので、あなたがレースに参加したい場合は、仕事を終える必要がありますが、同時に2つの以上のゲームに参加することはできません。
入力と出力のフォーマット
入力フォーマット:
最初のラインN(BI <AI)AI、BI、次のn行それぞれが2つの正の整数であり、整数であり、終了時刻を開始を表します。
出力フォーマット:
アップは競技整数の数に参加します。
入力出力サンプル
入力サンプル#1:
3
0 2
2 4
1 3
出力サンプル#1:
2
----------------
アイデア:貪欲、トップストレージクラス終了までの時間に基づいて、その後1時間のクラス、および、ゲームは、一致した場合と同時に終了開始時間は少なく、レコードの終了時間に等しいより、直接競争に参加し、その後、最終的な出力合計を++合計です。
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
struct Node{
int a; //start
int b; //end
}x[2000010];
bool cmp(Node x,Node y){
if(x.b == y.b) return x.a < y.a;//结束相等就按开始升序排列
return x.b < y.b;
}
int main(){
int n,sum = 1, min1;
scanf("%d",&n);
for(int i = 1;i <= n;i++)
cin>>x[i].a>>x[i].b;
sort(x+1,x+n+1,cmp);
min1 = x[1].b;
int j = 1;
while(j <= n){
j++;
if(x[j].a >= min1)
{
sum++;
min1 = x[j].b;
}
}
cout<<sum;
return 0;
}