/*
zoj_1029 贪心
贪心的典型题(会议安排的变形)
注意:起点可能比终点大
*/
#include <iostream>
#include <algorithm>
#include <string.h>
#include <cstdio>
using namespace std;
struct room
{
int sta,end;
}r[410];
bool flag[410];
int change( int num )
{
if( num%2==0 ) return num/2;
else return num/2+1;
}
bool cmp( room a,room b )
{
return a.sta<b.sta;
}
int main()
{
int T,i,j,n,last,temp;
bool in;
scanf( "%d",&T );
while( T-- )
{
memset( flag,0,sizeof(flag) );
scanf( "%d",&n );
for( i=0;i<n;i++ )
{
scanf( "%d%d",&r[i].sta,&r[i].end );
r[i].sta=change( r[i].sta );
r[i].end=change( r[i].end );
if( r[i].sta>r[i].end )
{
temp=r[i].sta;
r[i].sta=r[i].end;
r[i].end=temp;
}
}
sort( r,r+n,cmp );
j=0;
while( 1 )
{
last=-1;
in=false;
for( i=0;i<n;i++ )
{
if( !flag[i] && r[i].sta>last )
{
flag[i]=1;
last=r[i].end;
in=true;
}
}
if( !in ) break;
j++;
}
printf( "%d\n",j*10 );
}
return 0;
}
zoj 1029
最新推荐文章于 2020-04-17 21:56:28 发布