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

【洛谷】AT_abc188_c [ABC188C] ABC Tournament 的题解

【洛谷】AT_abc188_c [ABC188C] ABC Tournament 的题解

洛谷传送门

AT传送门

Vjudge传送门

题解

谔谔,最近月考,没时间写题解。现在终于有时间了qaq

通过对样例的数据分析我们可以看到。本题的考点就是一个二叉搜索树,因此最简单的方法就是使用递归来实现。

我们将当前节点编号为 i i i,其父节点编号为 i 2 \frac{i}{2} 2i,其右兄弟节点编号为 i + 1 i + 1 i+1

这样,我们通过控制数组下标,即可实现。时间复杂度 O ( log ⁡ 2 N ) O(\log 2 ^ N) O(log2N)

代码

#include <bits/stdc++.h>
#define lowbit(x) x & (-x)
#define endl "\n"
using namespace std;
typedef long long ll;
typedef unsigned long long ulson;
namespace fastIO {
	inline int read() {
		register int x = 0, f = 1;
		register char c = getchar();
		while (c < '0' || c > '9') {
			if(c == '-') f = -1;
			c = getchar();
		}
		while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
		return x * f;
	}
	inline void write(int x) {
		if(x < 0) putchar('-'), x = -x;
		if(x > 9) write(x / 10);
		putchar(x % 10 + '0');
		return;
	}
}
using namespace fastIO;
int a[100005], n;
int dfs(int l, int r) {
    if (l + 1 == r) {
        return a[l] > a[r] ? l : r;
    }
    int mid = (l + r) >> 1;
    int lson = dfs(l, mid), rson = dfs(mid + 1, r);
    if(l == 1 && r == n) {
        cout << (a[lson] > a[rson] ? rson : lson) << endl;
        return 0;
    } 
	else {
        return a[lson] > a[rson] ? lson : rson;
    }
}
int main() {
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
	n = read();
    n = 1 << n;
    for(int i = 1; i <= n; i ++) {
        a[i] = read();
    }
    if(n == 2) {
        cout << (a[1] > a[2] ? "2" : "1") << endl;
    }
    else {
    	dfs(1, n);
	}
	return 0;
}

http://www.kler.cn/a/350214.html

相关文章:

  • IDEA中Maven使用的踩坑与最佳实践
  • 使用 Box2D 库开发愤怒的小鸟游戏
  • Spring WebFlux 和 Spring MVC 的主要区别是什么?
  • 【HarmonyOS NEXT】华为分享-碰一碰开发分享
  • 路径规划之启发式算法之二十八:候鸟优化算法(Migrating Birds Optimization, MBO)
  • 2024.ailx10的年终总结
  • Elastic Stack--16--ES三种分页策略
  • docker使用基础
  • 【含文档】基于Springboot+Vue的白云山景点门票销售管理系统(含源码+数据库+lw)
  • 前端导出json数据函数
  • 【fisco学习记录】搭建第一个单群组联盟链
  • Redis 完整指南:命令与原理详解
  • dart-sass和node-sass的区别,使用dart-sass后可能会出现的问题
  • 请求参数中字符串的+变成了空格
  • Redis技术指南:数据类型、事务处理与过期键管理
  • 倍福TwinCAT程序中遇到的bug
  • 【专题】智启未来:新质生产力引擎驱动下的智能制造行业革新报告合集PDF分享(附原数据表)
  • 2024全网最详细CTF入门指南、CTF夺旗赛使用工具及刷题网站
  • 「从零开始的 Vue 3 系列」:第十一章——跨域问题解决方案全解析
  • Linux-标准IO常用函数
  • 联名物料常泄漏?一端叠满“安全buff”
  • Spring Boot课程问答:技术难题专家解答
  • 从SRE视角透视DevOps的构建精髓
  • 基于Java+Springboot+Vue开发的酒店客房预订管理系统
  • Opencv:FisherFace算法实现人脸检测
  • Mybatis核心配置文件的详解