2
2
1 10
10 11
3
1 10
10 11
11 20
1
2
注意:如果上一个活动在t时间结束,下一个活动最早应该在t+1时间开始
#include
#include
using namespace std;
struct node
{
int begin;
int end;
}st[100000];
bool cmp (node x, node y)
{
return x.begin}
int main()
{
int N,n,i;
cin>>N;
while (N--)
{
int count=1,t; // 初始值==1
cin>>n;
for (i=0;i{
cin>>st[i].begin>>st[i].end;
}
sort (st,st+n,cmp); //按时间先后顺序排序
t = st[0].end; // 从第二次开始计算
for (i=1;i{
if (st[i].begin>t) //当下一次的开始时间大于上一次结束时间时,count+1.
{
count++;
t = st[i].end;
}
else
{
if (st[i].endt = st[i].end;
}
}
cout<
}
return 0;
}