202606-去旅行(luogu-B4551)

202606-去旅行(luogu-B4551)

GESP C++一级,2026年6月真题,基础运算和条件判断,难度⭐,洛谷难度入门

luogu-B4551 [GESP202606 一级] 去旅行

题目要求

题目描述

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

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

  1. AA 市直飞 BB 市;
  2. AA 市坐高铁到 CC 市,然后坐飞机到 BB 市;
  3. AA 市坐高铁到 CC 市,然后坐高铁到 BB 市。

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

输入格式

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

  • 11 行的正整数表示「从 AA 市直飞 BB 市」的价格;
  • 22 行的正整数表示「从 AA 市坐高铁到 CC 市」的价格;
  • 33 行的正整数表示「从 CC 市坐飞机到 BB 市」的价格;
  • 44 行的正整数表示「从 CC 市坐高铁到 BB 市」的价格。

输出格式

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

输入输出样例 #1

输入 #1

999
105
699
588

输出 #1

693

输入输出样例 #2

输入 #2

9
3
8
7

输出 #2

9

说明/提示

样例解释 1

方案 11. 直飞价格为 999999

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

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

因此最便宜的价格是 693693

样例解释 2

方案 11. 直飞价格为 99

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

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

因此最便宜的价格是 99

数据范围

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


题目分析

解题思路

本题的解题思路如下:

  1. 问题本质:

    • 输入 44 个正整数,分别为直飞价格、A→C 高铁价格、C→B 飞机价格、C→B 高铁价格
    • 计算三种出行方案的总价,输出最小值
  2. 解题关键 — 计算并比较三种方案的价格:

    • 方案 11(直飞):价格为第 11 个输入值
    • 方案 22(高铁转飞机):价格为第 22 个 + 第 33 个输入值
    • 方案 33(全程高铁):价格为第 22 个 + 第 44 个输入值
    • 比较三者取最小值即可,可用 min 函数或 if 语句实现
  3. 复杂度分析:

    • 时间复杂度:O(1)O(1),只需常数次运算
    • 空间复杂度:O(1)O(1),只需要存储几个整数变量

示例代码

#include <iostream>

int main() {
    // 声明变量存储四个价格
    int a, b, c, d;
    // 从标准输入读取四个价格
    // a: A市直飞B市, b: A市高铁到C市, c: C市飞机到B市, d: C市高铁到B市
    std::cin >> a >> b >> c >> d;
    // 计算三种方案的价格
    int plan1 = a;       // 方案1:直飞
    int plan2 = b + c;   // 方案2:高铁转飞机
    int plan3 = b + d;   // 方案3:全程高铁
    // 求三种方案中的最小值
    int minCost = plan1;
    if (plan2 < minCost) {
        minCost = plan2;
    }
    if (plan3 < minCost) {
        minCost = plan3;
    }
    // 输出最便宜的价格
    std::cout << minCost;
    return 0;
}

本文由coderli.com原创,按照CC BY-NC-SA 4.0 进行授权

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

luogu-”系列题目可在 洛谷题库 在线评测。

bcqm-”系列题目可在 编程启蒙题库 在线评测。

GESP/CSP认证交流QQ群: 688906745

GESP/CSP 认证学习微信公众号
GESP/CSP 认证学习微信公众号
最后更新于