贪心,重叠计数。
首先,对门的房间可以认为是一个,例如1和2号房间都可以看成是2号房间,这样就可以假设为有1-200个房间排成一行,用一个数组标记从a到b房间之间的房间,有重叠的时候标记++,标记数组中最大的数cnt记录一下,最后cnt即是需要搬运的次数即时间为cnt*10
1 #include <stdio.h> 2 #include <string.h> 3 #define maxn 200+10 4 int room[maxn]; 5 int main () 6 { 7 int T; 8 scanf ("%d",&T); 9 while (T--) 10 { 11 int n; 12 scanf ("%d",&n); 13 int i,cnt = 0; 14 memset (room,0,sizeof (room)); 15 for (i = 0;i<n;++i) 16 { 17 int a,b; 18 scanf ("%d%d",&a,&b); 19 a = (a+1)/2; 20 b = (b+1)/2; 21 if (a>b){int t = a;a = b;b = t;} 22 int j; 23 for (j = a;j<=b;++j) 24 { 25 room [j]++; 26 if (cnt<room[j])cnt = room[j]; 27 } 28 } 29 printf ("%d\n",cnt*10); 30 } 31 return 0; 32 }
HDU1050Moving Tables,布布扣,bubuko.com
原文:http://www.cnblogs.com/GJKACAC/p/3587077.html