pku1083: Moving Tables

pku1083: http://poj.org/problem?id=1083
题意:有一条走廊,走廊两边为房间,一边的编号都为奇数(1、3……、399),一边的编号都为偶数(2、4……、400),现要从某个房间搬东西到另一房间,走廊很窄,不能共用,即若要用到同一段走廊,不能同时搬,搬一次需时10,求最小搬家时间 解法:贪心:因为如果不冲突的话可以同时进行,所以最小次数为走廊需要用到的次数最多那段的次数,再乘以10即为最小时间。 code:
#include<iostream>
#include<cstdio>
#include<cstdlib>
int ans[500];
int main()
{
    int t,n,a,b,max,tt;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        memset(ans,0,sizeof(ans));
        while(n--)
        {
            scanf("%d%d",&a,&b);
            if(a>b)
            {
                tt=a;a=b;b=tt;
            }
            if(a%2==0)a--;
            if(b%2!=0)b++;
            for(int i=a;i<=b;i++)
                ans[i]++;
        }
        max=ans[0];
        for(int i=1;i<=400;i++)
        {
            if(ans[i]>max)
                max=ans[i];
        }
        printf("%d\n",max*10);
    }
}
/*input:
3
4
10 20
30 40
50 60
70 80
2
1 3
2 200
3
10 100
20 80
30 50
output:
10
20
30
*/

posted on 2012-07-25 20:35  acmer-jun  阅读(173)  评论(0编辑  收藏  举报

导航