题目内容:
有n头牛(1<=n<=50,000)要挤奶。给定每头牛挤奶的时间区间[A,B](1<=A<=B<=1,000,000,A,B为整数)。牛需要呆在畜栏里才能挤奶。一个畜栏同一时间只能容纳一头牛。问至少需要多少个畜栏,才能完成全部挤奶工作,以及每头牛都放哪个畜栏里?注意:在同一个畜栏的两头牛,它们挤奶时间区间不能在端点重合。
输入格式:
第1行:一个正整数N;
第2..N+1行:第i+1行的两个整数给出第i头奶牛的挤奶时间。
输出格式:
需要畜栏的最小数
输入样例:
5
1 10
2 4
3 6
5 8
4 7
输出样例:
4
时间限制:500ms内存限制:32000kb
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int n;
cin >> n;
vector<vector<int>> a(n, vector<int>(2));
for (int i = 0; i < n; i++)
{
cin >> a[i][0] >> a[i][1];
}
vector<int>b(n);//栅栏是否被使用,n为最大栅栏数
vector<int>c(n);//记录牛所在的栅栏编号
int flag = 0;//栅栏个数
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (b[j] == 0)
{
b[j] = a[i][1];
flag++;
c[i] = j;
break;
}
else
{
if (a[i][0] > b[j])
{
b[j] = a[i][1];
c[i] = j;
break;
}
}
}
}
cout << flag;
}