B4551 [GESP202606 一级] 去旅行

题目描述

快暑假了,小杨同学正在计划出去旅行,前往目的地的方案多种多样,小杨同学想知道如何前往目的地最便宜。

小杨同学住在 AAA 市,旅行目的地是 BBB 市,小杨同学前往目的地有三种方案:

  1. AAA 市直飞 BBB 市;
  2. AAA 市坐高铁到 CCC 市,然后坐飞机到 BBB 市;
  3. AAA 市坐高铁到 CCC 市,然后坐高铁到 BBB 市。

请帮小杨同学求出最便宜的出行方案的价格。

输入格式

输入包含 444 行,每行一个正整数:

  • 111 行的正整数表示「从 AAA 市直飞 BBB 市」的价格;
  • 222 行的正整数表示「从 AAA 市坐高铁到 CCC 市」的价格;
  • 333 行的正整数表示「从 CCC 市坐飞机到 BBB 市」的价格;
  • 444 行的正整数表示「从 CCC 市坐高铁到 BBB 市」的价格。

输出格式

输出一个正整数,表示 333 种方式中,最便宜的出行方案的价格。

输入输出样例 #1

输入 #1

999
105
699
588

输出 #1

693

输入输出样例 #2

输入 #2

9
3
8
7

输出 #2

9

说明/提示

样例解释 1

方案 111. 直飞价格为 999999999

方案 222. 高铁转飞机价格为 105+699=804105 + 699 = 804105+699=804

方案 333. 高铁的价格为 105+588=693105 + 588 = 693105+588=693

因此最便宜的价格是 693693693

样例解释 2

方案 111. 直飞价格为 999

方案 222. 高铁转飞机价格为 3+8=113 + 8 = 113+8=11

方案 333. 高铁的价格为 3+7=103 + 7 = 103+7=10

因此最便宜的价格是 999

数据范围

所有输入均为正整数,且不超过 100001000010000

解析

取三种方案的最小值,详见代码:

#include <bits/stdc++.h>
using namespace std;

int main() {
    int a, b, c, d;
    cin >> a >> b >> c >> d;
    // 方案1:直飞 a
    // 方案2:高铁到C + 飞机到B = b + c
    // 方案3:高铁到C + 高铁到B = b + d
    int ans = min(a, min(b + c, b + d));
    cout << ans << endl;
    return 0;
}

更多推荐