当前位置: 首页 > backend >正文

每日c/c++题 备战蓝桥杯(洛谷P4715 【深基16.例1】淘汰赛 题解)

洛谷P4715 【深基16.例1】淘汰赛 题解

题目大意

有 (2^n) 名选手进行淘汰赛,每场比赛两人对决,能力值高者胜出;若能力值相同,则编号较小者胜出。最终决出冠军,要求输出亚军的编号。

解题思路

关键观察:亚军是决赛中与冠军对决的选手。而冠军必定是全局能力值最大的选手,亚军则是另一半区中能力值最大的选手。

分治策略

  1. 将选手分为左右两半区。
  2. 分别找出左右半区的最大值及其位置。
  3. 比较左右半区的最大值,较大的为冠军,另一半区的最大值即为亚军。
代码解释
#include <bits/stdc++.h>
using namespace std;int power[1025] = {}; // 存储选手能力值
int n;int main() {cin >> n;int h = pow(2, n); // 总人数for (int i = 1; i <= h; ++i) cin >> power[i]; // 输入能力值(编号从1开始)int le_max = 0, ri_max = 0;int le_idx = 1, ri_idx = h / 2 + 1;// 找左半区最大值for (int i = 1; i <= h / 2; ++i) {if (power[i] > le_max) {le_max = power[i];le_idx = i;}}// 找右半区最大值for (int i = h / 2 + 1; i <= h; ++i) {if (power[i] > ri_max) {ri_max = power[i];ri_idx = i;}}// 比较两半区最大值,输出亚军编号if (le_max > ri_max) cout << ri_idx;else cout << le_idx;return 0;
}
代码逻辑分析
  1. 输入处理:读取 (n) 和 (2^n) 个能力值,存入数组 power(编号从1开始)。
  2. 分半区查找
    • 左半区(前 (2^{n-1}) 个)遍历找到最大值 le_max 及其位置 le_idx
    • 右半区(后 (2^{n-1}) 个)同理找到 ri_maxri_idx
  3. 决赛对决:比较两半区最大值,较大的为冠军,另一半区的最大值位置即为亚军。
关键细节
  • 编号处理:数组从1开始存储,避免与C++中 pow(2, n) 的索引混淆。
  • 相等能力值:当能力值相同时,代码默认保留先遇到的选手(编号较小),符合题意。
复杂度分析
  • 时间复杂度:(O(2^n)),需遍历数组两次。
  • 空间复杂度:(O(2^n)),存储能力值数组。
示例说明

样例输入

2
5 4 3 2

执行过程

  1. 左半区 [5, 4] 最大值为5(位置1)。
  2. 右半区 [3, 2] 最大值为3(位置3)。
  3. 比较5和3,5胜出为冠军,亚军为右半区的3(位置3)。

输出

3
注意事项
  • 数组越界:确保输入人数为 (2^n),避免访问 power[h+1]
  • 特殊情况:当 (n=0) 时需单独处理(题目保证 (n \geq 1))。
总结

本题通过分治思想,将问题简化为两半区的局部最大值比较,避免了完整模拟淘汰赛的高复杂度。代码简洁高效,关键在于理解亚军必为另一半区最大值的逻辑。

http://www.xdnf.cn/news/7322.html

相关文章:

  • 基于Zynq SDK的LWIP UDP组播开发实战指南
  • redis的List为什么用ziplist和quicklist
  • SCGI 服务器详解
  • 大模型(1)——基本概念
  • JVM的内存划分
  • vue3:十三、分类管理-表格--编辑、新增、详情、刷新
  • TDengine 安全部署配置建议
  • SpringBoot+ELK 搭建日志监控平台
  • Android Kotlin权限管理最佳实践
  • 【集成电路】集成电路导论知识点
  • HJ10 字符个数统计【牛客网】
  • JavaScript:PC端特效--缓动动画
  • Linux问题排查-找到偷偷写文件的进程
  • Word2Vec详解
  • 【Canvas与图标】圆角方块蓝星CSS图标
  • python打卡训练营打卡记录day30
  • 会议动态|第十五届亚太燃烧学术年会精彩探析
  • 解释:神经网络
  • 深入理解 ZAB:ZooKeeper 原子广播协议的工作原理
  • 26.项目集群-redis分布式锁
  • 力扣每日一题5-19
  • es在已有历史数据的文档新增加字段操作
  • 27.第二阶段x64游戏实战-分析技能属性
  • mysql故障排查与环境优化
  • DeepSeek 赋能数字孪生:重构虚实共生的智能未来图景
  • 【AI面试秘籍】| 第17期:MoE并行策略面试全攻略:从理论到调参的降维打击指南
  • 视觉-语言导航:综述与类别
  • 面试点补充
  • 【Vue】路由2——编程式路由导航、 两个新的生命周期钩子 以及 路由守卫、路由器的两种工作模式
  • 在Excel中使用函数公式时,常见错误对应不同的典型问题