【郑轻】[1799]wrz的压岁钱

文章字数:576

问题描述

wrz的压岁钱
时间限制:1 Sec内存限制:128 MB

Description

马上要过年了,电子信息wrz要去亲戚家拿压岁钱。
他的亲戚有三家,他有一辆谷鸽牌电动车,电量只能支持从自己家骑到任意一家亲戚家,然后电动车就会没电了,电动车会放在该亲戚家充电。
剩下的两家亲戚由电子信息wrz步行过去,之后再回来骑充满电的谷鸽牌电动车回家。
但是电子信息wrz比较懒,不喜欢走太多路,你能帮他算出最少要走多少路程吗?

Input

第一行为数字T,表示有T(1<=T<=1000)组测试数据。
每组数据占一行,分别有三个整数x,y,z,代表三家中任意两家的路程。(1<=x,y,z<=10~9)
例如:三家亲戚分别为a,b,c,则三个数字分别为a到b的路程,b到c的路程,c到a的路程。

Output

每个实例输出占一行:格式为Case#x:y
x为第x个实例,y为电子信息wrz需要走的最短路程。

Sample Input

1
2
3
4
3
1 2 3
4 5 6
7 8 9

Sample Output

1
2
3
Case #1: 6
Case #2:15
Case #3: 24

问题分析

第一眼思路是画了个三角形
于是感觉非常简单
但总感觉有点诡异
于是突然意识到
坑点是这三个数据并不一定能组成三角形
当不是三角形的时候
原路返回而不走第三个
的情况下用的路程更少

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<stdio.h>
#include<algorithm>
using namespace std;
int main() {
    int T;
    int k,i;
    long long a[3];
    long long sum;
    scanf("%d",&T);
    for(k=1;k<=T;k++) {
        for(i=0; i<3; i++)
            scanf("%lld",&a[i]);
        sort(a,a+3);
        sum=a[0]+a[1];
        if(a[2]<sum)
            sum+=a[2];
        else
            sum+=sum;
        printf("Case #%d: %lld\n",k,sum);
    }
    return 0;
}

题目地址:【郑轻】[1799]wrz的压岁钱

该内容采用 CC BY-NC-SA 4.0 许可协议。

如果对您有帮助或存在意见建议,欢迎在下方评论交流。

加载中...