LeetCode 1686. 石子游戏 VI(贪心)

文章目录

    • 1. 题目
    • 2. 解题


283 / 1660,前17%

681 / 6572,前10.4%

1. 题目

Alice 和 Bob 轮流玩一个游戏,Alice 先手。

一堆石子里总共有 n 个石子,轮到某个玩家时,他可以 移出 一个石子并得到这个石子的价值。
Alice 和 Bob 对石子价值有 不一样的的评判标准

给你两个长度为 n 的整数数组 aliceValues 和 bobValues 。
aliceValues[i] 和 bobValues[i] 分别表示 Alice 和 Bob 认为第 i 个石子的价值。

所有石子都被取完后,得分较高的人为者。
如果两个玩家得分相同,那么为平局。
两位玩家都会采用 最优策略 进行游戏。

请你推断游戏的结果,用如下的方式表示:

  • 如果 Alice 赢,返回 1 。
  • 如果 Bob 赢,返回 -1 。
  • 如果游戏平局,返回 0 。
示例 1:
输入:aliceValues = [1,3], bobValues = [2,1]
输出:1
解释:
如果 Alice 拿石子 1 (下标从 0开始),那么 Alice 可以得到 3 分。
Bob 只能选择石子 0 ,得到 2 分。
Alice 获胜。示例 2:
输入:aliceValues = [1,2], bobValues = [3,1]
输出:0
解释:
Alice 拿石子 0 , Bob 拿石子 1 ,他们得分都为 1 分。
打平。示例 3:
输入:aliceValues = [2,4,3], bobValues = [1,6,7]
输出:-1
解释:
不管 Alice 怎么操作,Bob 都可以得到比 Alice 更高的得分。
比方说,Alice 拿石子 1 ,Bob 拿石子 2 , Alice 拿石子 0 ,Alice 会得到 6 分而 Bob 得分为 7 分。
Bob 会获胜。提示:
n == aliceValues.length == bobValues.length
1 <= n <= 10^5
1 <= aliceValues[i], bobValues[i] <= 100

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

2. 解题

类似题目:
LeetCode 877. 石子游戏(DP)
LeetCode 1140. 石子游戏 II(DP)*
LeetCode 1406. 石子游戏 III(DP)
LeetCode 1563. 石子游戏 V(DP)
LeetCode 5447. 石子游戏 IV hard(博弈DP)
LeetCode 1025. 除数博弈(动态规划)
LeetCode 5627. 石子游戏 VII(博弈DP)

  • 贪心,没有证明,蒙过去的,两者的和相加,大的优先拿走
  • 参考大佬证明:题解区
  • 假设 两个物品价值(a1, b1),(a2, b2)a1-b2 (a拿1,b拿2) > a2-b1 (a拿2,b拿1) -->等价于 a1+b1 > a2+b2
class Solution {
public:int stoneGameVI(vector<int>& aliceValues, vector<int>& bobValues) {int n = aliceValues.size();vector<pair<int, int>> delta(n);for(int i = 0; i < n; i++) {delta[i].first = aliceValues[i]+bobValues[i];//和大的优先delta[i].second = i;}sort(delta.rbegin(), delta.rend());//和大的优先int a = 0, b = 0;bool alice = true;for(int i = 0; i < n; ++i){if(alice)a += aliceValues[delta[i].second];elseb += bobValues[delta[i].second];alice = !alice;}if(a > b) return 1;else if(a < b) return -1;return 0;}
};

816 ms 105.4 MB C++


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

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

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

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

相关文章

T4生成实体和简单的CRUD操作

主要跟大家交流下T4,我这里针对的是mysql,我本人比较喜欢用mysql,所以语法针对mysql,所以你要准备mysql的DLL了,同理sqlserver差不多,有兴趣可以自己写写,首先网上找了一个T4的帮助类,得到一些数据库属性,命名为 DbHelper.ttinclude <# template debug"false" hos…

LeetCode 1688. 比赛中的配对次数(模拟)

文章目录1. 题目2. 解题1. 题目 给你一个整数 n &#xff0c;表示比赛中的队伍数。比赛遵循一种独特的赛制&#xff1a; 如果当前队伍数是 偶数 &#xff0c;那么每支队伍都会与另一支队伍配对。总共进行 n / 2 场比赛&#xff0c;且产生 n / 2 支队伍进入下一轮。如果当前队…

微信小程序使用函数的方法

一、使用来自不同页面的函数 函数写在util.js页面 function formatTime(date) {var year date.getFullYear()var month date.getMonth() 1var day date.getDate()var hour date.getHours()var minute date.getMinutes()var second date.getSeconds()return [year, mon…

LeetCode 1689. 十-二进制数的最少数目(脑筋急转弯)

文章目录1. 题目2. 解题1. 题目 如果一个十进制数字不含任何前导零&#xff0c;且每一位上的数字不是 0 就是 1 &#xff0c;那么该数字就是一个 十-二进制数 。 例如&#xff0c;101 和 1100 都是 十-二进制数&#xff0c;而 112 和 3001 不是。 给你一个表示十进制整数的字…

WeUI for 小程序使用教程文档总结

WeUI 是一套同微信原生视觉体验一致的基础样式库&#xff0c;由微信官方设计团队为微信 Web 开发量身设计&#xff0c;可以令用户的使用感知更加统一。包含按钮button、组件cell、弹框dialog、 进度条progress、 提示toast、文章article、弹出菜单actionsheet、图标icon等各式元…

如何安装Pycharm官方统计代码行插件

最近一直想统计Pycharm的总计代码行数&#xff0c;找到了官方的统计行数插件&#xff0c;发现效果还不错。 官方代码统计插件指导&#xff1a; https://plugins.jetbrains.com/plugin/4509-statistic&#xff08;英文版&#xff09; (初级教程&#xff0c;大牛请忽略) ***该…

LeetCode 1690. 石子游戏 VII(博弈DP)

文章目录1. 题目2. 解题1. 题目 石子游戏中&#xff0c;爱丽丝和鲍勃轮流进行自己的回合&#xff0c;爱丽丝先开始 。 有 n 块石子排成一排。每个玩家的回合中&#xff0c;可以从行中 移除 最左边的石头或最右边的石头&#xff0c;并获得与该行中剩余石头值之 和 相等的得分。…

LeetCode 1691. 堆叠长方体的最大高度(排序+最大上升子序DP)

文章目录1. 题目2. 解题2.1 暴力超时解2.2 排序最长上升子序463 / 3709&#xff0c;前 12.5%1240 / 9290&#xff0c;前13.3%1. 题目 给你 n 个长方体 cuboids &#xff0c;其中第 i 个长方体的长宽高表示为 cuboids[i] [widthi, lengthi, heighti]&#xff08;下标从 0 开始…

使用LSTM建立seq2seq模型进行语言翻译

文章目录1. 数据处理2. 编码器、解码器数据2.1 编码器2.2 解码器2.3 模型3. 训练4. 推理模型5. 采样参考 基于深度学习的自然语言处理 1. 数据处理 读取数据 with open(deu.txt, r, encodingutf-8) as f:lines f.read().split(\n) print("文档有 {} 行。".format(…

【struts2】预定义拦截器

&#xff11;&#xff09;预定义拦截器 Struts2有默认的拦截器配置&#xff0c;也就是说&#xff0c;虽然我们没有主动去配置任何关于拦截器的东西&#xff0c;但是Struts2会使用默认引用的拦截器。由于Struts2的默认拦截器声明和引用都在这个Struts-default.xml里面&#xff0…

使用注意力机制建模 - 标准化日期格式

文章目录1. 概述2. 数据3. 模型4. 训练5. 测试参考 基于深度学习的自然语言处理本文使用attention机制的模型&#xff0c;将各种格式的日期转化成标准格式的日期 1. 概述 LSTM、GRU 减少了梯度消失的问题&#xff0c;但是对于复杂依赖结构的长句子&#xff0c;梯度消失仍然存…

牛客 数学实验(模拟)

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/10166/A 来源&#xff1a;牛客网 牛牛在做数学实验。 老师给了牛牛一个数字n&#xff0c;牛牛需要不断地将所有数位上的值做乘法运算&#xff0c;直至最后数字不发生变化为止。 请你帮牛…

css动画之波纹

样式定义&#xff1a; #ContactAbout { height: auto; position: relative; overflow: hidden; } #sectioncontact { display: block; width: 100%; position: relative; height: 700px; z-index: 10; }#sectioncontact .map { width: 370px; height: 280px; position: absolut…

牛客 奇怪的排序问题(单调栈/遍历)

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/10166/B 来源&#xff1a;牛客网 操场上有n个人排成一队&#xff0c;这n个人身高互不相同&#xff0c;可将他们的身高视为一个1到n的排列。 这时需要把队伍变成升序&#xff0c;也就是从…

Python 中,matplotlib绘图无法显示中文的问题

在python中&#xff0c;默认情况下是无法显示中文的&#xff0c;如下代码&#xff1a; import matplotlib.pyplot as plt# 定义文本框和箭头格式 decisionNode dict(boxstyle "sawtooth", fc "0.8") leafNode dict(boxstyle "round4", fc …

牛客 XOR和(找规律)

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/10166/C 来源&#xff1a;牛客网 牛牛最近学会了异或操作&#xff0c;于是他发现了一个函数 f(x)x⊕(x−1)f(x)x\oplus (x-1)f(x)x⊕(x−1)&#xff0c;现在牛牛给你一个数 n&#xff0c…

天池 在线编程 数组划分III(计数)

文章目录1. 题目2. 解题1. 题目 https://tianchi.aliyun.com/oj/231188302809557697/235445278655844965 给你一个整数数组和一个整数K&#xff0c;请你判断数组是否可以划分为若干大小为k序列&#xff0c;并满足以下条件&#xff1a; 数组中的每一个数恰恰出现在一个序列中…

详解nohup和 区别

一、nohup nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令&#xff0c;忽略所有挂断&#xff08;SIGHUP&#xff09;信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令&#xff0c;添加 & &#xff08; 表示“and”的符号&#xf…

天池 在线编程 最小振幅(排序)

文章目录1. 题目2. 解题1. 题目 https://tianchi.aliyun.com/oj/231188302809557697/235445278655844966 给定一个由N个整数组成的数组A&#xff0c;一次移动&#xff0c;我们可以选择此数组中的任何元素并将其替换为任何值。 数组的振幅是数组A中的最大值和最小值之间的差。…

Python把两张图片拼接为一张图片并保存

这里主要用Python扩展库pillow中Image对象的paste()方法把两张图片拼接起来 from os import listdir from PIL import Imagedef pinjie():# 获取当前文件夹中所有JPG图像im_list [Image.open(fn) for fn in listdir() if fn.endswith(.jpg)]# 图片转化为相同的尺寸ims []for…