1 条题解

  • 0
    @ 2026-6-19 10:30:57

    📝 题目大意

    有 N(奇数)张选票,目前高桥得 T 票,青木得 A 票。判断选举结果是否已经确定(即剩余选票无论如何分配,胜者都不变)。

    💡 解题思路

    1. 题目分析:N 是奇数且 ≤ 99,数据范围极小。关键在于:结果确定当且仅当某一方已经获得超过半数的选票(即 ≥ ⌈N/2⌉),因为此时即使剩余全部选票投给另一方,也无法改变结果。
    2. 算法推导:由于 N 为奇数,半数以上即为 (N + 1) / 2(整数除法)。只需检查 T >= (N + 1) / 2A >= (N + 1) / 2,满足则输出 Yes,否则输出 No
    3. 边界与细节:注意输入格式为 N T A(不是 N A T,题目描述中第三个变量是 A)。N=1 时,(N+1)/2 = 1,若 T=0 且 A=0 则两人都未过半,输出 No(如样例 3)。

    ⏱️ 复杂度分析

    • 时间复杂度O(1)O(1)
    • 空间复杂度O(1)O(1)

    💻 标准代码 (C++)

    #include<iostream>
    int main(){
        int n, t, a;
        std::cin >> n >> t >> a;
        // 由于 N 是奇数,过半票数 = (N+1)/2
        // 若其中一方已获得过半票数,则结果已定
        if(a >= (n + 1) / 2 || t >= (n + 1) / 2){
            std::cout << "Yes\n";
        }
        else{
            std::cout << "No\n";
        }
    return 0;
    }
    
    • 1

    信息

    ID
    816
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    1
    已通过
    1
    上传者