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

Leetcode 3449. Maximize the Minimum Game Score

  • Leetcode 3449. Maximize the Minimum Game Score
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3449. Maximize the Minimum Game Score

1. 解题思路

这一题思路上就是一个二分法,尝试各个score,看看是否可以满足在给定的m次操作限制下,使得每一个数都不小于给定的score。

然后,我们给出对应的score的下确界即可。

此时,我们需要实现的就是如何判断是否可以在有限的m次操作下将所有的game的score都大于某个给定的值 k k k

要判断这件事,我们需要注意移动是连续的,因此,某一个位置能到达的次数必然满足:
a i − 1 + a i + 1 ≥ a i a_{i-1} + a_{i+1} \geq a_{i} ai1+ai+1ai

因此,我们可以通过贪婪算法找出每一个位置要满足至少达到给定分数 k k k的前提下所需要经过的最小的次数。

2. 代码实现

给出python代码实现如下:

class Solution:
    def maxScore(self, points: List[int], m: int) -> int:
        
        def is_possible(score):
            cnt = 0
            debt = 0
            for i, p in enumerate(points[:-1]):
                need = ceil(score / p)
                if debt >= need:
                    cnt += debt+1
                    debt = 0
                else:
                    cnt += need
                    debt = need-debt-1
                if cnt > m:
                    return False
            if cnt + debt > m:
                return False
            
            allow = debt + (m-cnt-debt+1)//2
            return allow * points[-1] >= score
        
        l, r = 0, max(points) * ((m+1) // 2) + 1
        while r-l>1:
            k = (l+r) // 2
            flag = is_possible(k)
            if flag:
                l = k
            else:
                r = k
        return l

提交代码评测得到:耗时3534ms,占用内存24.1MB。


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

相关文章:

  • 数据仓库和商务智能:洞察数据,驱动决策
  • JS中|=是什么意思?
  • 信创领域的PostgreSQL管理员认证
  • C++ Primer sizeof运算符
  • 如何在Android Studio中开发一个简单的Android应用?
  • 视觉硬件选型和算法选择(CNN)
  • 【MQ】Spring3 中 RabbitMQ 的使用与常见场景
  • 2025.2.9机器学习笔记:PINN文献阅读
  • excel拆分表格
  • Processing P5js姓氏数据可视化项目
  • Maven 与企业项目的集成
  • python--sqlite
  • K8s —基础指南(K8s - Basic Guide)
  • DeepSeek本地安装+集成VScode使用
  • LM Studio本地调用模型的方法
  • rockmq配置出现的问题
  • 表单配置化方案:Formily
  • 攻防世界32 very_easy_sql
  • elasticsearch实战三 elasticsearch与mysql数据实时同步
  • 活动预告 | Power Hour: Copilot 引领商业应用的未来
  • 全面理解-c++11中的移动语义
  • Windows系统下设置Vivado默认版本:让工程文件按需打开
  • emlog最新跨站脚本漏洞(CNVD-2025-01607、CVE-2024-13140)
  • DeepSeek为何能爆火
  • QUIC 与 UDP 关系
  • 知识图谱可视化系统python+neo4j+vue3