2029. 石子游戲 IX

2029. 石子游戲 IX

Alice 和 Bob 再次設計了一款新的石子游戲。現有一行 n 個石子,每個石子都有一個關聯的數字表示它的價值。給你一個整數數組 stones ,其中 stones[i] 是第 i 個石子的價值。

Alice 和 Bob 輪流進行自己的回合,Alice 先手。每一回合,玩家需要從 stones 中移除任一石子。

如果玩家移除石子后,導致 所有已移除石子 的價值 總和 可以被 3 整除,那么該玩家就 輸掉游戲 。
如果不滿足上一條,且移除后沒有任何剩余的石子,那么 Bob 將會直接獲勝(即便是在 Alice 的回合)。
假設兩位玩家均采用 最佳 決策。如果 Alice 獲勝,返回 true ;如果 Bob 獲勝,返回 false 。

示例 1:輸入:stones = [2,1]
輸出:true
解釋:游戲進行如下:
- 回合 1:Alice 可以移除任意一個石子。
- 回合 2:Bob 移除剩下的石子。 
已移除的石子的值總和為 1 + 2 = 3 且可以被 3 整除。因此,Bob 輸,Alice 獲勝。示例 2:輸入:stones = [2]
輸出:false
解釋:Alice 會移除唯一一個石子,已移除石子的值總和為 2 。 
由于所有石子都已移除,且值總和無法被 3 整除,Bob 獲勝。示例 3:輸入:stones = [5,1,2,4,3]
輸出:false
解釋:Bob 總會獲勝。其中一種可能的游戲進行方式如下:
- 回合 1:Alice 可以移除值為 1 的第 2 個石子。已移除石子值總和為 1 。
- 回合 2:Bob 可以移除值為 3 的第 5 個石子。已移除石子值總和為 = 1 + 3 = 4 。
- 回合 3:Alices 可以移除值為 4 的第 4 個石子。已移除石子值總和為 = 1 + 3 + 4 = 8 。
- 回合 4:Bob 可以移除值為 2 的第 3 個石子。已移除石子值總和為 = 1 + 3 + 4 + 2 = 10.
- 回合 5:Alice 可以移除值為 5 的第 1 個石子。已移除石子值總和為 = 1 + 3 + 4 + 2 + 5 = 15.
Alice 輸掉游戲,因為已移除石子值總和(15)可以被 3 整除,Bob 獲勝。

解題思路

因為如果玩家移除石子后,導致 所有已移除石子 的價值 總和 可以被 3 整除,那么該玩家就 輸掉游戲 。所以我們已移除石頭和3的整除關系就可以了,所以我們只需要把石頭分為3類,mod3為0,1,2的三類,稱為mod1,mod2和mod3,mod1和mod2兩類的石頭相加必然會被3整除,而已經移除的石頭總數在移除的過程中是不斷變化狀態的,例如原來是mod1狀態,移除一堆mod1狀態的石頭后,就會轉化為mod2狀態,為了使得不產生mod0狀態,Alice和BOb的最佳拿法必然是
Alice先拿mod1或者mod2,以mod1為例,11212121212,產生12循環,0可以隨意穿插,不影響結果,一旦哪一方不能繼續產生12循環,那方就失敗

代碼

class Solution {
public:bool stoneGameIX(vector<int> stones) {vector<int> a(3);for (auto i:stones) a[i%3]++;vector<int> b{a[0],a[2],a[1]};return check(a)|check(b);}bool check(vector<int> a){if (a[1]==0) return false;a[1]--;int t=min(a[1],a[2])*2+1+a[0];if (a[1]>a[2]){a[1]--;t++;}return t%2==1&&a[1]!=a[2];}
};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/389736.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/389736.shtml
英文地址,請注明出處:http://en.pswp.cn/news/389736.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大數據可視化應用_在數據可視化中應用種族平等意識

大數據可視化應用The following post is a summarized version of the article accepted to the 2020 Visualization for Communication workshop as part of the 2020 IEEE VIS conference to be held in October 2020. The full paper has been published as an OSF Preprint…

Windows10電腦系統時間校準

有時候新安裝電腦系統&#xff0c;系統時間不對&#xff0c;需要主動去校準系統時間。1、點擊時間 2、日期和時間設置 3、其他日期、時間和區域設置 4、設置時間和日期 5、Internet 時間 6、點擊立即更新&#xff0c;如果更新失敗就查電腦是否已聯網&#xff0c;重試點擊立即更…

webpack問題

Cannot find module webpack/lib/node/NodeTemplatePlugin 全局&#xff1a;npm i webpack -g npm link webpack --save-dev 轉載于:https://www.cnblogs.com/doing123/p/8994269.html

397. 整數替換

397. 整數替換 給定一個正整數 n &#xff0c;你可以做如下操作&#xff1a; 如果 n 是偶數&#xff0c;則用 n / 2替換 n 。 如果 n 是奇數&#xff0c;則可以用 n 1或n - 1替換 n 。 n 變為 1 所需的最小替換次數是多少&#xff1f; 示例 1&#xff1a; 輸入&#xff1a;…

pd種知道每個數據的類型_每個數據科學家都應該知道的5個概念

pd種知道每個數據的類型意見 (Opinion) 目錄 (Table of Contents) Introduction 介紹 Multicollinearity 多重共線性 One-Hot Encoding 一站式編碼 Sampling 采樣 Error Metrics 錯誤指標 Storytelling 評書 Summary 摘要 介紹 (Introduction) I have written about common ski…

td

單元格td設置padding&#xff0c;而不能設置margin。轉載于:https://www.cnblogs.com/fpcbk/p/9617629.html

清除浮動的幾大方法

對于剛接觸到html的一些人經常會用到浮動布局&#xff0c;但對于浮動的使用和清除浮動來說是大為頭痛的&#xff0c;在這里介紹幾個關于清除浮動的的方法。如果你說你要的就是浮動為什么要清除浮動的話&#xff0c;我就真的無言以對了&#xff0c;那你就當我沒說。 關于我們在布…

xgboost keras_用catboost lgbm xgboost和keras預測財務交易

xgboost kerasThe goal of this challenge is to predict whether a customer will make a transaction (“target” 1) or not (“target” 0). For that, we get a data set of 200 incognito variables and our submission is judged based on the Area Under Receiver Op…

2017. 網格游戲

2017. 網格游戲 給你一個下標從 0 開始的二維數組 grid &#xff0c;數組大小為 2 x n &#xff0c;其中 grid[r][c] 表示矩陣中 (r, c) 位置上的點數。現在有兩個機器人正在矩陣上參與一場游戲。 兩個機器人初始位置都是 (0, 0) &#xff0c;目標位置是 (1, n-1) 。每個機器…

HUST軟工1506班第2周作業成績公布

說明 本次公布的成績對應的作業為&#xff1a; 第2周個人作業&#xff1a;WordCount編碼和測試 如果同學對作業成績存在異議&#xff0c;在成績公布的72小時內&#xff08;截止日期4月26日0點&#xff09;可以進行申訴&#xff0c;方式如下&#xff1a; 畢博平臺的第二周在線答…

幣氪共識指數排行榜0910

幣氪量化數據在今天的報告中給出DASH的近期買賣信號&#xff0c;可以看出從今年4月中旬起到目前為止&#xff0c;DASH_USDT的價格總體呈現出下降的趨勢。 轉載于:https://www.cnblogs.com/tokpick/p/9621821.html

走出囚徒困境的方法_囚徒困境的一種計算方法

走出囚徒困境的方法You and your friend have committed a murder. A few days later, the cops pick the two of you up and put you in two separate interrogation rooms such that you have no communication with each other. You think your life is over, but the polic…

2016. 增量元素之間的最大差值

2016. 增量元素之間的最大差值 給你一個下標從 0 開始的整數數組 nums &#xff0c;該數組的大小為 n &#xff0c;請你計算 nums[j] - nums[i] 能求得的 最大差值 &#xff0c;其中 0 < i < j < n 且 nums[i] < nums[j] 。 返回 最大差值 。如果不存在滿足要求的…

Zookeeper系列四:Zookeeper實現分布式鎖、Zookeeper實現配置中心

一、Zookeeper實現分布式鎖 分布式鎖主要用于在分布式環境中保證數據的一致性。 包括跨進程、跨機器、跨網絡導致共享資源不一致的問題。 1. 分布式鎖的實現思路 說明&#xff1a; 這種實現會有一個缺點&#xff0c;即當有很多進程在等待鎖的時候&#xff0c;在釋放鎖的時候會有…

resize 按鈕不會被偽元素遮蓋

textarea默認有個resize樣式&#xff0c;效果就是下面這樣 讀 《css 揭秘》時發現兩個亮點&#xff1a; 其實這個屬性不僅適用于 textarea 元素&#xff0c;適用于下面所有元素&#xff1a;elements with overflow other than visible, and optionally replaced elements repre…

平臺api對數據收集的影響_收集您的數據不是那么怪異的api

平臺api對數據收集的影響A data analytics cycle starts with gathering and extraction. I hope my previous blog gave an idea about how data from common file formats are gathered using python. In this blog, I’ll focus on extracting the data from files that are…

709. 轉換成小寫字母

709. 轉換成小寫字母 給你一個字符串 s &#xff0c;將該字符串中的大寫字母轉換成相同的小寫字母&#xff0c;返回新的字符串。 示例 1&#xff1a;輸入&#xff1a;s "Hello" 輸出&#xff1a;"hello"示例 2&#xff1a;輸入&#xff1a;s "here…

前端技術周刊 2018-09-10:Redux Mobx

前端快爆 在 Chrome 10 周年之際&#xff0c;正式發布 69 版本&#xff0c;整體 UI 重新設計&#xff0c;同時iOS 版本重新將工具欄放置在了底部。API 層面&#xff0c;支持了 CSS Scroll Snap、前端資源鎖 Web Lock API、WebWorker 里面可以跑的 OffscreenCanvas API、toggleA…

PPT制作

0.【整體風格】整體風格統一 界面排版 0.1 字體大小&#xff1b; 0.2 字體顏色&#xff1b; 0.3 字體的種類統一(不是指只取一種字體)&#xff09; 1.【表達】結構化表達&#xff1b; 2.【取色】取色風格統一&#xff1b; 技巧&#xff1a;主色不超過三種&#xff0c;色彩不宜多…

1984. 學生分數的最小差值

1984. 學生分數的最小差值 給你一個 下標從 0 開始 的整數數組 nums &#xff0c;其中 nums[i] 表示第 i 名學生的分數。另給你一個整數 k 。 從數組中選出任意 k 名學生的分數&#xff0c;使這 k 個分數間 最高分 和 最低分 的 差值 達到 最小化 。 返回可能的 最小差值 。…