题目大意:
我们要在足够多的会场里举行各种活动,一个会场在同一时刻只能安排一个活动,希望使用尽可能少的会场总数。假设一个活动结束后,立即可以在这个会场中进行下一个活动,即如果活动i使用了第3个会场,结束时间是fi,那么如果另有一个活动j的开始时间是sj,sj=fi,那么你可以将活动j也放在这个3号会场进行。
解题思路:
纯模拟 一道大水
#include <cstdio>
#include <algorithm>
using namespace std;
int n,ans;
struct node{
int s,f;
}a[101];
bool cmp(node x,node y)
{
return x.s<y.s;
}
int main()
{
//freopen("meet.in","r",stdin);
//freopen("meet.out","w",stdout);
scanf("%d",&n);
ans=n;//我的方法是直接找不可以的,找到就-1
for (int i=1;i<=n;i++)
scanf("%d%d",&a[i].s,&a[i].f);
sort(a+1,a+n+1,cmp);//先一次排序
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
if (i!=j)
if (a[j].s>=a[i].f&&a[i].f!=-1&&a[i].s!=-1&&a[j].f!=-1&&a[j].s!=-1)
ans--,a[i].f=a[j].f,a[j].s=-1,a[j].f=-1;//然后比较,替换,总和-1
printf("%d",ans);
return 0;
}