欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

POJ:1083 Moving Tables

程序员文章站 2022-06-04 08:11:00
...

题目链接

POJ:1083 Moving Tables

POJ:1083 Moving Tables

题意:

400个房间分布在一条走廊的两边,现要从房间A将桌子挪到房间B,一次挪动10分钟,多次挪动不可以重叠走廊区域,求最短挪动时间

题解:

简单模拟即可,模拟每次挪动桌子,将该区域的时间加10,则重复区域的时间会加倍,最后求出最长的时间,即可

注意:

单数和双数的分布问题,即1和2是占用了一块走廊,而1和3占用了两块走廊

房间A并不一定小于房间B,即需要判断从小房间挪到大房间,交换

#include <stdio.h>
#include <iostream>
using namespace std;
int main(){
    int room[205];
    int t;
    cin>>t;
    while(t--){
        for(int i=1;i<=200;i++){
            room[i]=0;
        }
        int n;
        cin>>n;
        while(n--){
            int a,b;
            cin>>a>>b;
            if(a%2!=0){//处理奇数偶数
                a=a+1;
            }
            a=a/2;
            if(b%2!=0){//处理奇偶数
                b=b+1;
            }
            b=b/2;
            if(a>=b){//交换,小房间挪到大房间
                int tmp=b;
                b=a;
                a=tmp;
            }
            for(int i=a;i<=b;i++)
            {
                room[i]+=10;
            }
        }
        int result=0;
        for(int i=1;i<=200;i++){
            result=max(result,room[i]);
        }
        cout<<result<<endl;
    }
    return 0;
}

 

相关标签: POJ