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;
    }
  • 相关阅读:
    网络兼职轻松赚
    微信H5支付demo
    支付宝H5支付demo
    笔记本安装SSD固态硬盘详细的优化设置
    JQuery的AJAX
    第二次面试
    存储过程的总结
    SQl数据操作和查询
    面对考试毫无畏惧的SSH
    掷骰子-IOS新手项目练习(抱歉,由于个人原因,图片没显示,要源码的项目私聊)
  • 原文地址:https://www.cnblogs.com/hrlnw/p/2955158.html
Copyright © 2011-2022 走看看