题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1428
先按开始时间排序,可以想象有一些教室(vector),然后有新活动举行,遍历vector看是否有教室活动结束,该教室活动结束就在这个教室举行活动,没有就新开教室举行活动,即vector push_back该活动,最后输出vector.size()就行了。
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
struct t
{
int l,r;
}a[ 10000];
bool cmp(t x,t y)
{
return x.l<y.l;
}
int main()
{
int n;
vector<t>vec;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i].l>>a[i].r;
sort(a,a+n,cmp);
vec.push_back(a[0]);
for(int i=1;i<n;i++)
{
bool flag=true;
for(int j=0;j<vec.size();j++)
if(a[i].l>=vec[j].r)
{
vec[j].l=a[i].l;
vec[j].r=a[i].r;
flag=false;
break;
}
if(flag)
vec.push_back(a[i]);
}
cout<<vec.size();
return 0;
}