View Code
1 /* 2 贪心 排序 3 */ 4 #include<stdio.h> 5 #include<stdlib.h> 6 #include<string.h> 7 #include<iostream> 8 #include<algorithm> 9 #include<queue> 10 #include<map> 11 #include<math.h> 12 using namespace std; 13 const int maxn = 1505; 14 const int inf = 0x7fffffff; 15 struct node{ 16 int x,y; 17 int vis; 18 }a[ maxn ]; 19 bool cmp( node a,node b ){ 20 if( a.x!=b.x ) return a.x<b.x; 21 else return a.y<b.y; 22 } 23 int main(){ 24 int T; 25 scanf("%d",&T); 26 while( T-- ){ 27 int n; 28 scanf("%d",&n); 29 int ai,b; 30 for( int i=1;i<=n;i++ ){ 31 scanf("%d%d",&ai,&b); 32 33 if( ai%2==1 ) ai=(ai+1)/2; 34 else ai/=2; 35 if( b%2==1 ) b=(b+1)/2; 36 else b/=2; 37 38 if( ai>b ) swap( ai,b ); 39 //ai=(ai+1)/2,b=(b+1)/2; 40 a[ i ].x=ai; 41 a[ i ].y=b; 42 a[ i ].vis=0; 43 } 44 sort( a+1,a+1+n,cmp ); 45 int ans=0; 46 int x,y; 47 bool flag; 48 while( 1 ){ 49 flag=false; 50 for( int i=1;i<=n;i++ ){ 51 if( a[ i ].vis == 0 ){ 52 a[ i ].vis=1; 53 x=a[ i ].x,y=a[ i ].y; 54 ans+=10; 55 flag=true; 56 break; 57 } 58 } 59 if( flag==false ) break; 60 for( int i=1;i<=n;i++ ){ 61 if( a[ i ].vis==1 ) continue; 62 if( a[ i ].x>y ){ 63 a[ i ].vis=1; 64 y=a[ i ].y; 65 } 66 } 67 } 68 printf("%d\n",ans); 69 } 70 return 0; 71 }