HDU1050Moving Tables

  贪心,重叠计数。

  首先,对门的房间可以认为是一个,例如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 }

 

posted on 2014-03-07 19:49  round_0  阅读(201)  评论(0编辑  收藏  举报

导航