杭电 acm step 1.3.1 Moving Tables

来源:互联网 发布:nginx获取header头 编辑:程序博客网 时间:2024/06/04 18:43

杭电 acm step 1.3.1Moving Tables

    相信总有一天会符合今天对自己的期许。

    题意:某栋建筑的某个楼层有400个房间,房间门两两冲齐,题目上画了这个布局图,现在要移动各个房间里面的桌子,每一次将房间A里面的桌子移动房间B里面,每次移动不论距离长短都需要十分钟,但是如果每次移动的桌子不共用走廊,就可以同时移动。

   思路:好吧,别人教的。想象给出的每组数据就是每个木板在坐标轴上的起始坐标和终点坐标,不论怎样,那个被覆盖次数最多的点被覆盖的次数就是最少必须需要的移动次数。嗯。

   代码+细节如下:

        

#include<stdio.h>int main(){    int i,j,a[50000],b[50000],c[1000],max,n,N,k,t;    scanf("%d",&N);    for(k = 1;k<=N;k++){        scanf("%d",&n);        for(i = 0;i<=n-1;i++){            scanf("%d%d",&a[i],&b[i]);            if(a[i]%2!=0)                a[i] = a[i]+1; /*差为1的单双号房间共用一片走廊*/            if(b[i]%2!=0)                b[i] = b[i]+1;            if(a[i]>b[i]){  /*不一定是从前往后移动*/                t = b[i];                b[i] = a[i];                a[i] =t;            }        }        for(i = 0;i<=500;i++){            c[i] = 0;        }        for(i = 0;i<=n-1;i++){            for(j = a[i]-1;j<=b[i]-1;j++){                c[j]++;            }        }        max = 0;        for(i = 0;i<=500;i++){            if(c[i]>max){                max = c[i];            }        }        printf("%d\n",max*10);    }    return 0;}


 

原创粉丝点击