zoukankan      html  css  js  c++  java
  • poj1083 解题报告(poj 1083 analysis report)

    题目

    一层里面有400个房间,北边和南边各有200个房间,要从一个房间里面把一张桌子移动到另一个房间,需要占用这两个房间之间的所有走廊(包括这两个房间前面的),每移动一个桌子需要10分钟,给出需要移动的桌子的数据(从哪移动到哪),要求计算出最少需要多少分钟才能把所有桌子移动完。

    分析

    题很简单,但是一定要看题目里面的那个图。要注意的只有一点,房间1和2前面是同一个走廊,所以从1移动到2只需要占用一个走廊,房间2和3前面不是同一个走廊,因此从2移动到3需要占用2个走廊。基本思路是开辟一个200的数组,表示所有房间前面的走廊,每个元素初始化为0,如果从m移动到n(假设m<n,但是在程序中处理输入时需要判断两个数大小),则把序号为(m-1)/2到(n-1)/2的所有数组元素都+10,这样处理完每个桌子后,遍历整个数组寻找最大的一个元素,即为实际的需要时间。

    代码

    #include<stdlib.h>
    #include<stdio.h>
    #include<string.h>
    int main(){
        int n,tables,corridor[200],i,j,start,end,time,x,y;
        scanf("%d",&n);
        while(n-->0){
            memset(corridor,0,sizeof(corridor));
            time=0;
            scanf("%d",&tables);
            for(i=0;i<tables;i++){
                scanf("%d%d",&x,&y);
                start=((x<y?x:y)-1)/2;
                end=((x>y?x:y)-1)/2;
                for(j=start;j<=end;j++)
                    corridor[j]+=10;
            }
            for(i=0;i<200;i++)
                time=corridor[i]>time?corridor[i]:time;
            printf("%d\n",time);
        }
        return 0;
    }
  • 相关阅读:
    fullCalendar改造计划之带农历节气节假日的万年历(转)
    Linked List Cycle
    Remove Nth Node From End of List
    Binary Tree Inorder Traversal
    Unique Binary Search Trees
    Binary Tree Level Order Traversal
    Binary Tree Level Order Traversal II
    Plus One
    Remove Duplicates from Sorted List
    Merge Two Sorted Lists
  • 原文地址:https://www.cnblogs.com/hrlnw/p/2955158.html
Copyright © 2011-2022 走看看