1 条题解

  • 0
    @ 2026-10-18 17:43:59

    G1025 [GESP202603 一级] 交朋友 题解

    难度:2(GeekPi教学评定);知识点:绝对值、最值、多条件比较。

    解题思路

    以自身身高h为基准,检查三个候选人的身高x。优先选择绝对差abs(x-h)最小者,若差相同则选择更矮者。参考代码比较“身高差、身高”二元组。

    为什么正确

    逐个候选与当前最优比较,始终保留已看过的人中按题目规则最优的一人,最终即全体最优。

    易错点

    不能只比身高大小;差相同时必须选择身高较小者。二元组也可改写为两个普通if条件。

    复杂度

    时间:O(3),本题为常数;额外空间:O(1)。

    参考代码(C++17)

    #include<bits/stdc++.h>
    
    using namespace std;
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        int h,x,ans=-1;
        cin>>h;
        for(int i=0;i<3;i++) {
            cin>>x;
            if(ans==-1||make_pair(abs(x-h),x)<make_pair(abs(ans-h),ans))ans=x;
        }
        cout<<ans;
    }
    

    来源与说明

    本题解为配套教学整理,非官方题解。题库使用自行生成的测试数据,6个测试点。

    • 1

    信息

    ID
    633
    时间
    1000ms
    内存
    512MiB
    难度
    进阶
    标签
    递交数
    2
    已通过
    1
    上传者