LeetCode 2212. 射箭比赛中的最大得分(状态枚举)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

Alice 和 Bob 是一场射箭比赛中的对手。比赛规则如下:

Alice 先射 numArrows 支箭,然后 Bob 也射 numArrows 支箭。

分数按下述规则计算:

  • 箭靶有若干整数计分区域,范围从 0 到 11 (含 0 和 11)。
  • 箭靶上每个区域都对应一个得分 k(范围是 0 到 11),Alice 和 Bob 分别在得分 k 区域射中 ak 和 bk 支箭。
  • 如果 ak >= bk ,那么 Alice 得 k 分。如果 ak < bk ,则 Bob 得 k 分
  • 如果 ak == bk == 0 ,那么无人得到 k 分。

例如,Alice 和 Bob 都向计分为 11 的区域射 2 支箭,那么 Alice 得 11 分。如果 Alice 向计分为 11 的区域射 0 支箭,但 Bob 向同一个区域射 2 支箭,那么 Bob 得 11 分。

给你整数 numArrows 和一个长度为 12 的整数数组 aliceArrows ,该数组表示 Alice 射中 0 到 11 每个计分区域的箭数量。
现在,Bob 想要尽可能 最大化 他所能获得的总分。

返回数组 bobArrows ,该数组表示 Bob 射中 0 到 11 每个 计分区域的箭数量。且 bobArrows 的总和应当等于 numArrows 。

如果存在多种方法都可以使 Bob 获得最大总分,返回其中 任意一种 即可。

示例 1:
在这里插入图片描述

输入:numArrows = 9, aliceArrows = [1,1,0,1,0,0,2,1,0,1,2,0]
输出:[0,0,0,0,1,1,0,0,1,2,3,1]
解释:上表显示了比赛得分情况。
Bob 获得总分 4 + 5 + 8 + 9 + 10 + 11 = 47 。
可以证明 Bob 无法获得比 47 更高的分数。

示例 2:
在这里插入图片描述

输入:numArrows = 3, aliceArrows = [0,0,1,0,0,0,0,0,0,0,0,2]
输出:[0,0,0,0,0,0,0,0,1,1,1,0]
解释:上表显示了比赛得分情况。
Bob 获得总分 8 + 9 + 10 = 27 。
可以证明 Bob 无法获得比 27 更高的分数。提示:
1 <= numArrows <= 10^5
aliceArrows.length == bobArrows.length == 12
0 <= aliceArrows[i], bobArrows[i] <= numArrows
sum(aliceArrows[i]) == numArrows

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-points-in-an-archery-competition
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 用 12位的 int 表示 bob 能赢下来的位置
  • 分别检查需要的 箭的数量是否足够,取出得分最大的状态即可
class Solution {
public:vector<int> maximumBobPoints(int numArrows, vector<int>& aliceArrows) {int maxscore = 0, ans_state = 0;for(int state = 1; state < (1<<12); ++state){int needarrows = 0, score = 0;for(int j = 0; j < 12; ++j){if((state>>j)&1) // bob 要取得 j 的得分{needarrows += aliceArrows[j]+1;//至少需要比alice多一个箭score += j;}}if(needarrows <= numArrows && score > maxscore){maxscore = score;ans_state = state;}}vector<int> ans(12, 0);int usedarrows = 0, idx = -1;for(int i = 0; i < 12; ++i){if((ans_state>>i)&1){ans[i] = aliceArrows[i]+1;usedarrows += ans[i];idx = i; // 赢的一个位置}}int leftarrows = numArrows - usedarrows;ans[idx] += leftarrows;//剩余的箭随便找个位置放上return ans;}
};

52 ms 9.6 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471112.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

web前端复习系列[1]——标签

<h1>一般用于网站标题。加入强调语气&#xff0c;使用<strong>和<em>标签。<em> 表示强调&#xff0c;<strong> 表示更强烈的强调。并且在浏览器中<em> 默认用斜体表示&#xff0c;<strong> 用粗体表示。两个标签相比&#xff0c;目…

十七、MySQL触发器(创建、删除、查看)详解

触发器 一、介绍 触发器是与表有关的数据库对象&#xff0c;指在 insert/update/delete 之前或之后&#xff0c;触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性 , 日志记录 , 数据校验等操作 。 使用别名 OLD 和 NEW 来引用…

LeetCode 2215. 找出两数组的不同(set)

文章目录1. 题目2. 解题1. 题目 给你两个下标从 0 开始的整数数组 nums1 和 nums2 &#xff0c;请你返回一个长度为 2 的列表 answer &#xff0c;其中&#xff1a; answer[0] 是 nums1 中所有 不 存在于 nums2 中的 不同 整数组成的列表。answer[1] 是 nums2 中所有 不 存在…

HDOJ 5071 Chat 模拟

大模拟&#xff1a; 1》saygoodbye要先对 always on top 的人说 2》对没有说过话的不要说good bye 3》用long long Chat Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 337 Accepted Submission(s): 82Prob…

十八、MySQL之TCL事务控制语言(详解)

TCL &#xff1a; Transaction Control Language 事务控制语言 零、MySQL 中的存储引擎 1、概念&#xff1a;在mysql中的数据用各种不同的技术存储在文件&#xff08;或内存&#xff09;中。 2、通过show engines&#xff1b;来查看mysql支持的存储引擎。 3、 在mysql中用的…

LeetCode 2220. 转换数字的最少位翻转次数(位运算)

文章目录1. 题目2. 解题1. 题目 一次 位翻转 定义为将数字 x 二进制中的一个位进行 翻转 操作&#xff0c;即将 0 变成 1 &#xff0c;或者将 1 变成 0 。 比方说&#xff0c;x 7 &#xff0c;二进制表示为 111 &#xff0c;我们可以选择任意一个位&#xff08;包含没有显示…

UITextField属性

UITextField属性 0、enablesReturnKeyAutomatically 默认为No,如果设置为Yes,文本框中没有输入任何字符的话&#xff0c;右下角的返回按钮是disabled的。1、borderStyle 设置边框样式&#xff0c;只有设置了才会显示边框样式text.borderStyle UITextBorderStyleRoundedRect;ty…

LeetCode 2221. 数组的三角和

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的整数数组 nums &#xff0c;其中 nums[i] 是 0 到 9 之间&#xff08;两者都包含&#xff09;的一个数字。 nums 的 三角和 是执行以下操作以后最后剩下元素的值&#xff1a; nums 初始包含 n 个元素。如果 n 1 &…

十九、MySQL常用命令总结

数据结构核心原理与算法应用C:\Windows\system32> net stop mysql0815MySQL0815 服务正在停止. MySQL0815 服务已成功停止。C:\Windows\system32>net start mysql0815 MySQL0815 服务正在启动 . MySQL0815 服务已经启动成功。C:\Windows\system32>mysql -h localhost…

移动web开发之rem布局(rem基础、媒体查询、 less 基础、rem适配方案)

移动web开发之rem布局 一、rem基础 rem单位 rem (root em)是一个相对单位&#xff0c;类似于em&#xff0c;em是父元素字体大小。 不同的是rem的基准是相对于html元素的字体大小。 比如&#xff0c;根元素&#xff08;html&#xff09;设置font-size12px; 非根元素设置wid…

LeetCode 2222. 选择建筑的方案数

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的二进制字符串 s &#xff0c;它表示一条街沿途的建筑类型&#xff0c;其中&#xff1a; s[i] 0 表示第 i 栋建筑是一栋办公楼&#xff0c;s[i] 1 表示第 i 栋建筑是一间餐厅。 作为市政厅的官员&#xff0c;你需要随…

内存管理 内存泄漏

垃圾回收机制是周期性的&#xff0c;按照特定的周期循环&#xff0c;或者按照预先定义的时间执行最流行的回收机制是mark-and-sweep当一个变量进入当前上下文&#xff0c;那么会被标示为在上下文中&#xff0c;内存不会被释放&#xff0c;当他离开会被标示为不在上下文&#xf…

LeetCode 2224. 转化时间需要的最少操作数(贪心)

文章目录1. 题目2. 解题1. 题目 给你两个字符串 current 和 correct &#xff0c;表示两个 24 小时制时间 。 24 小时制时间 按 "HH:MM" 进行格式化&#xff0c;其中 HH 在 00 和 23 之间&#xff0c;而 MM 在 00 和 59 之间。 最早的 24 小时制时间为 00:00 &…

移动端WEB开发之响应式布局(响应式开发原理、bootstrap、阿里百秀案例)

移动端WEB开发之响应式布局 1.1 响应式开发原理 就是使用媒体查询针对不同宽度的设备进行布局和样式的设置&#xff0c;从而适配不同设备的目的。 设备的划分情况&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8" /><…

【原创】Java实现手机号码归属地查询

网络上已经有很多的手机号码归属地查询的API接口&#xff0c;但是这些接口总是有一些大大小小的缺陷。 总结一下这些缺陷&#xff1a; 1、要直接将它的搜索框链接形式粘到自己的页面&#xff0c;点击查询的时候还要跳转到他们的网站来展示归属地结果 2、提供接口的API&#xff…

jQuery学习笔记系列(三)——事件注册、事件处理、事件对象、拷贝对象、多库共存、jQuery插件、toDoList综合案例

day03 - jQuery 学习目标&#xff1a; 能够说出4种常见的注册事件 能够说出 on 绑定事件的优势 能够说出 jQuery 事件委派的优点以及方式 能够说出绑定事件与解绑事件 能够说出 jQuery 对象的拷贝方法 能够说出 jQuery 多库共存的2种方法 能够使用 jQuery 插件 1.1. jQuery 事件…

LeetCode 2225. 找出输掉零场或一场比赛的玩家(计数)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 matches 其中 matches[i] [winneri, loseri] 表示在一场比赛中 winneri 击败了 loseri 。 返回一个长度为 2 的列表 answer &#xff1a; answer[0] 是所有 没有 输掉任何比赛的玩家列表。answer[1] 是所有恰好输掉 一场 比…

BZOJ4068 : [Ctsc2015]app

对于一个所选任务集合&#xff0c;如果对于任意时刻$i$&#xff0c;$i$前面所选任务数都不超过i的话&#xff0c;那么这些任务可以全选。 维护一棵线段树$T$&#xff0c;第$i$个位置一开始为$i$&#xff0c;每使用一个任务&#xff0c;$[t,T]$都要减$1$。 插入一个任务&#xf…

Log4j配置文件

Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的&#xff0c;它可接keyvalue格式的设置或xml格式的设置信息。通过配置&#xff0c;可以创建出Log4J的运行环境。 配置文件 Log4J配置文件的基本格式如下&#xff1a; #配置根Logger log4j.rootLog…

LeetCode 2226. 每个小孩最多能分到多少糖果(二分查找)

文章目录1. 题目2. 解题1. 题目 给你一个 下标从 0 开始 的整数数组 candies 。数组中的每个元素表示大小为 candies[i] 的一堆糖果。你可以将每堆糖果分成任意数量的 子堆 &#xff0c;但 无法 再将两堆合并到一起。 另给你一个整数 k 。你需要将这些糖果分配给 k 个小孩&am…