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

每日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))。
总结

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

相关文章:

  • 安装NASM
  • 虚拟机的三个核心类加载器
  • 【VBA/word】批量替换字体大小
  • 深入解析分布式数据库TiDB:原理、优化与架构实践
  • 宏汇编以及浮点程序设计实验
  • 练习小项目5:基础计算器
  • 算法竞赛 Java 高精度 大数 小数 模版
  • 2025年即时通讯APP如何抵御DDoS攻击?全链路防御方案与实战解析
  • 5.19本日总结
  • Axure跨页面交互:利用IFrame和JS实现父子页面菜单联动
  • 如何快速更换电脑浏览器ip:教程与注意事项
  • 煤化工数字化关键一步:Modbus TCP转Profinet网关实现全流程通信兼容
  • 基于 Vue 和 Node.js 实现图片上传功能:从前端到后端的完整实践
  • Ubuntu服务器部署多语言项目(Node.js/Python)方式实践
  • 学习STC51单片机07(芯片为STC89C52RC)
  • arm64适配系列文章-第八章-第二节-arm64环境上seata的部署-手动构建1.4.2版本镜像
  • 使用 NGINX 的 `ngx_http_secure_link_module` 模块保护资源链接
  • APP小程序抓包和下游代理
  • HTTP 协议基础
  • JVM 垃圾回收器
  • 首届巴塞尔艺术奖公布:大卫·哈蒙斯、曹斐等36人获奖
  • 陈龙带你观察上海生物多样性,纪录片《我的城市邻居》明播出
  • 台湾关闭最后的核电,岛内担忧“非核家园”缺电、涨电价困局难解
  • 三方合作会否受政局变化影响?“中日韩+”智库合作论坛在沪举行
  • 从良渚到三星堆:一江水串起了5000年的文明对话
  • 荣盛发展:新增未支付债务11.05亿元