题解 CF1729A 【Two Elevators】

· · 题解

题意回顾

有两个电梯,其中第一个电梯会从 a 层去一层接你,第二个电梯会从 b 层先到 c 层,再去一层接你,电梯运行速度相同,若同时按下按钮,求谁先到一层接你。

首先想提醒大家注意数据范围,个人认为楼下的题解为了防止大家抄袭是过不了的,也希望大家不要抄题解

思路分析

第一个电梯的运行层数:a-1

第二个电梯的运行层数:由于是从 b 层先到 c 层,再接你,所以加上此过程,在按照第一个电梯的方法计算,得 |b-c|+c-1

同时,也提到了数据范围,不要每一次加一或减一到一层,数据比较大,会超时。

AC Code

#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read_int(){
    int s=0,w=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch='-'){
            w=-1;
        }
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        s=10*s+ch-'0';
        ch=getchar();
    }
    return s*w;
}
signed main(){
    int t=read_int();
    for(int i=1;i<=t;i+=1){
        int a=read_int();
        int b=read_int();
        int c=read_int();
        int e1=a-1;
        int e2=abs(b-c)-1+c;
        if(e1<e2){
            puts("1");
        }else if (e1>e2){
            puts("2");
        }else/*if(e1==e2)*/{
            puts("3");
        }
    } 
    return 0;
}