日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2024/7/5 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 1686. 石子游戏 VI(贪心) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

    • 1. 題目
    • 2. 解題


283 / 1660,前17%

681 / 6572,前10.4%

1. 題目

Alice 和 Bob 輪流玩一個(gè)游戲,Alice 先手。

一堆石子里總共有 n 個(gè)石子,輪到某個(gè)玩家時(shí),他可以 移出 一個(gè)石子并得到這個(gè)石子的價(jià)值。
Alice 和 Bob 對(duì)石子價(jià)值有 不一樣的的評(píng)判標(biāo)準(zhǔn)

給你兩個(gè)長(zhǎng)度為 n 的整數(shù)數(shù)組 aliceValues 和 bobValues 。
aliceValues[i] 和 bobValues[i] 分別表示 Alice 和 Bob 認(rèn)為第 i 個(gè)石子的價(jià)值。

所有石子都被取完后,得分較高的人為者。
如果兩個(gè)玩家得分相同,那么為平局。
兩位玩家都會(huì)采用 最優(yōu)策略 進(jìn)行游戲。

請(qǐng)你推斷游戲的結(jié)果,用如下的方式表示:

  • 如果 Alice 贏,返回 1 。
  • 如果 Bob 贏,返回 -1 。
  • 如果游戲平局,返回 0 。
示例 1: 輸入:aliceValues = [1,3], bobValues = [2,1] 輸出:1 解釋: 如果 Alice 拿石子 1 (下標(biāo)從 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 會(huì)得到 6 分而 Bob 得分為 7 分。 Bob 會(huì)獲勝。提示: n == aliceValues.length == bobValues.length 1 <= n <= 10^5 1 <= aliceValues[i], bobValues[i] <= 100

來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/stone-game-vi
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

2. 解題

類似題目:
LeetCode 877. 石子游戲(DP)
LeetCode 1140. 石子游戲 II(DP)*
LeetCode 1406. 石子游戲 III(DP)
LeetCode 1563. 石子游戲 V(DP)
LeetCode 5447. 石子游戲 IV hard(博弈DP)
LeetCode 1025. 除數(shù)博弈(動(dòng)態(tài)規(guī)劃)
LeetCode 5627. 石子游戲 VII(博弈DP)

  • 貪心,沒有證明,蒙過去的,兩者的和相加,大的優(yōu)先拿走
  • 參考大佬證明:題解區(qū)
  • 假設(shè) 兩個(gè)物品價(jià)值(a1, b1),(a2, b2), a1-b2 (a拿1,b拿2) > a2-b1 (a拿2,b拿1) -->等價(jià)于 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];//和大的優(yōu)先delta[i].second = i;}sort(delta.rbegin(), delta.rend());//和大的優(yōu)先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/

長(zhǎng)按或掃碼關(guān)注我的公眾號(hào)(Michael阿明),一起加油、一起學(xué)習(xí)進(jìn)步!

總結(jié)

以上是生活随笔為你收集整理的LeetCode 1686. 石子游戏 VI(贪心)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。