1 条题解
-
0
📝 题目大意
有 N(奇数)张选票,目前高桥得 T 票,青木得 A 票。判断选举结果是否已经确定(即剩余选票无论如何分配,胜者都不变)。
💡 解题思路
- 题目分析:N 是奇数且 ≤ 99,数据范围极小。关键在于:结果确定当且仅当某一方已经获得超过半数的选票(即 ≥ ⌈N/2⌉),因为此时即使剩余全部选票投给另一方,也无法改变结果。
- 算法推导:由于 N 为奇数,半数以上即为
(N + 1) / 2(整数除法)。只需检查T >= (N + 1) / 2或A >= (N + 1) / 2,满足则输出Yes,否则输出No。 - 边界与细节:注意输入格式为
N T A(不是N A T,题目描述中第三个变量是 A)。N=1 时,(N+1)/2 = 1,若 T=0 且 A=0 则两人都未过半,输出No(如样例 3)。
⏱️ 复杂度分析
- 时间复杂度:
- 空间复杂度:
💻 标准代码 (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
- 上传者