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

Python每日一题(11)

Python每日一题2025.3.31

  • 一、题目
    • 题目描述
    • 输入格式
    • 输出格式
    • 输入输出样例 #1
      • 输入 #1
      • 输出 #1
  • 二、分析
  • 三、源代码
  • 四、deepseek解决

一、题目

题目描述

2 n 2^n 2n n ≤ 7 n\le7 n7)个国家参加世界杯决赛圈且进入淘汰赛环节。已经知道各个国家的能力值,且都不相等。能力值高的国家和能力值低的国家踢比赛时高者获胜。1 号国家和 2 号国家踢一场比赛,胜者晋级。3 号国家和 4 号国家也踢一场,胜者晋级……晋级后的国家用相同的方法继续完成赛程,直到决出冠军。给出各个国家的能力值,请问亚军是哪个国家?

输入格式

第一行一个整数 n n n,表示一共 2 n 2^n 2n 个国家参赛。

第二行 2 n 2^n 2n 个整数,第 i i i 个整数表示编号为 i i i 的国家的能力值( 1 ≤ i ≤ 2 n 1\leq i \leq 2^n 1i2n)。

数据保证不存在平局。

输出格式

仅一个整数,表示亚军国家的编号。

输入输出样例 #1

输入 #1

3
4 2 3 1 10 5 9 7

输出 #1

1

二、分析

  首先需要判断最大的数在哪侧,然后另一侧一定是亚军所在位置。之后我们返回亚军所在位置下标就可以了。

三、源代码

n=int(input())
l=list(map(int, input().split()))

maxc=max(l)
i=l.index(maxc)
mid=2**n//2#这里最好是整除,要不下面切片的话会存在问题

if i<mid:
    right_half=l[mid:]
    right_max=max(right_half)
    max_index=mid+right_half.index(right_max)
else:
    # 冠军在右半区,亚军在左半区
    left_half=l[:mid]
    left_max=max(left_half)
    max_index=left_half.index(left_max)

print(max_index+1)

四、deepseek解决

  典型的二叉树问题,感觉用二叉树能做,所以给deepseek添加了条件,用二叉树解决。最后也是测试样例都通过了,没有问题。

class Node:
    def __init__(self, val, country, left=None, right=None):
        self.val = val
        self.country = country
        self.left = left
        self.right = right

n = int(input())
countries = list(map(int, input().split()))
# 创建叶子节点
nodes = [Node(val, i + 1) for i, val in enumerate(countries)]
queue = nodes.copy()

# 自底向上构建二叉树
while len(queue) > 1:
    next_queue = []
    # 每次处理两个节点,生成父节点
    for i in range(0, len(queue), 2):
        left = queue[i]
        right = queue[i + 1]
        if left.val > right.val:
            parent_val = left.val
            parent_country = left.country
        else:
            parent_val = right.val
            parent_country = right.country
        parent = Node(parent_val, parent_country, left, right)
        next_queue.append(parent)
    queue = next_queue

# 根节点的左右子节点即为决赛的两个国家
root = queue[0]
left_child = root.left
right_child = root.right

# 亚军是其中较小的那个
if left_child.val < right_child.val:
    print(left_child.country)
else:
    print(right_child.country)

  今天有点累了,后续分析。找到个做题的好地方,洛谷,还是免费的,这点比力扣强。

相关文章:

  • oracle执行计划
  • 《异常检测——从经典算法到深度学习》30. 在线服务系统中重复故障的可操作和可解释的故障定位
  • 42. 接雨水
  • Flutter敏感词过滤实战:基于AC自动机的高效解决方案
  • 二分查找:原理、循环不变量与边界处理
  • 设置网站主题色color-scheme
  • 【Easylive】HttpServletRequest、HttpServletResponse、HttpSession 介绍
  • Leetcode hot 100刷题之路(day 1)
  • 黑盒测试的场景法(能对项目业务进行设计测试点)
  • ngx_monotonic_time
  • Git Fetch 和 Git Pull 的区别
  • 双层板模组天线设计指南,50欧姆阻抗匹配设计
  • B-tree 索引失效 避坑指南
  • x265不同preset级别控制的编码参数与编码性能影响
  • BFS(广度优先搜索)
  • 使用DeepSeek API进行情感分析:超简单
  • c语言怎么处理字符串,与c++的区别
  • CentOS下安装Docker,Docker下安装JDK\MYSQL\REDIS\NGINX
  • 压测数据说话:如何用科学方法选择最优高防套餐?
  • 大数据技术之Scala:特性、应用与生态系统
  • 阿里巴巴招聘/金融网站推广圳seo公司
  • 好姑娘高清免费观看/上海搜索引擎优化1
  • 装置艺术那个网站做的好/脚本外链平台
  • php做原生直播网站/近期发生的重大新闻
  • 南宁网站建设加q.479185700/国内5大搜索引擎
  • html5企业网站建设/手机百度网页版