写a.e<b.e 竟然对了?!很烦,debug了好久
重点:p[i].e<p[j].s
如果n到100000,就模拟,每次优先队列最前面的人去,回来放入约会的结束时间,要是没人,就加一
bool cmp(const node& a, const node& b)
{
return a.s<b.s;
}
最好改成这样的,因为&b相当于给a起了个别名,否则,就是另开了一个空间,赋上a的值
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
struct node
{
int s;
int e;
}p[1005];
bool cmp(const node& a, const node& b)
{
return a.s<b.s;
}
int pd[1005];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&p[i].s,&p[i].e);
pd[i]=0;
}
sort(p+1,p+n+1,cmp);
int sum=0;
while(1)
{
int k=0;
for(int i=1;i<=n;i++)
{
if(pd[i]==0)
{
k=i;
break;
}
}
if(k==0) break;
for(int i=k;i<=n;)
{
if(pd[i]==0)
{
int q=0;
for(int j=i+1;j<=n;j++)
{
if(p[i].e<p[j].s&&pd[j]==0)
{
pd[i]=1;
i=j;
q++;
break;
}
}
if(q==0)
{
pd[i]=1;
break;
}
}
}
sum++;
}
printf("%d\n",sum);
}
return 0;
}