Discuz! Board

 找回密碼
 立即註冊
搜索
熱搜: 活動 交友 discuz
查看: 43|回復: 0
打印 上一主題 下一主題

博弈思维训练 Div1 B GameGame 异或博弈

[複製鏈接]

2587

主題

2589

帖子

7857

積分

管理員

Rank: 9Rank: 9Rank: 9

積分
7857
跳轉到指定樓層
樓主
發表於 2023-11-28 18:21:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
给定长度為n的数组,每次Alice和Bob轮番從数组當選擇一個数,终极選擇的数的异或和大的人获胜,请問在最优的前提下流戏的成果若何。

阐發:

异或的思惟在博弈中是比力難的,刚看到這题的時辰感受很難,無法思虑,但他的本色實際上是贪婪。

两人在都但愿本身的成果尽量的大,换句话说,但愿本身二進制上的每位都是1,再换句话说,但愿本身每位拿到的次数尽可能是奇数。咱們發明,存在最高位的時辰,在某種環境下必定可以經由過程抢最高位来分出输赢。

環境1 最高位呈現的次数x是偶数

此時两人都不必要斟酌這一名,由於無论最後怎样分派,要末二者分派都是奇数数目,要末二者都是偶数数目,分数差不會變革,是以两人不會去纠结這類環境,可以直接疏忽,继续斟酌下一個次高位。

環境2 最高位呈現的次数x是奇数

這是决议输赢手的關頭,此時奇数的分派方法是只有两種:

1 x % 4 == 1,此時先手先拿一個,剩下的由於是4的倍数,雙方城市拿到偶数個数的最高位,也就是至關於没拿,先手便可以比背工多拿這個位,以後的位無论怎样拿都是先手成功。

2 x % 4 == 3,此時先手若是先拿的话,最後先手就會拿治療高血壓中藥,到偶数個,地板污漬清潔,至關於没拿,也就是说,谁先拿某一個数包括该最高位的人就會输。先手必定不會碰,是以他必要從剩下不包括该最高位的数中拿,其数目為(n - x),明显若是n - x是奇数,先手就获胜了,不然背工获胜。

比力妙的博弈思惟~

代码:

  1. v台灣運動彩券首頁,oid solve()
  2. {
  3. cin >> n;
  4. int sum = 0, h = 0;
  5. for(int i = 1; i <= n ; i ++ ) cin >> a[i], sum ^= a[i];
  6. if(sum == 0) {
  7. puts("DRAW");
  8. return ;
  9. }
  10. for(int i = 31; ~i ; i -- ) {
  11. if(sum >> i & 1) { // 计较最高自嗨鍋,位
  12. h = i;
  13. break;
  14. }
  15. }
  16. int res = 0; // 统计最高位数目
  17. for(int i = 1; i <= n ; i ++ )
  18. if(a[i] >> h & 1) res ++ ;
  19. if(res % 4 == 1) puts("WIN");
  20. else {
  21. if((n - res) 關節止痛膏,& 1) puts("WIN");
  22. else puts("LOSE");
  23. }
  24. }
複製代碼
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

Archiver|手機版|小黑屋|台灣運動娛樂論壇  

娛樂城, 百家樂, 真人百家樂, 中醫推薦, 現金板, 彰化當舖, 彰化汽車借款, 彰化機車借款, 現金版, 刷卡換現金, 娛樂城, 運彩玩法, 7M足球即時比分, NBA即時比分, 發發發老虎機, 百家樂, 歐冠杯歐冠杯決賽歐冠盃歐冠盃決賽LEO娛樂財神娛樂財神娛樂城娛樂城註冊送娛樂城體驗金線上娛樂線上娛樂城賭博場所運彩場中運動彩券場中台灣運動彩券首頁運動彩券單場運彩單場運動彩場中投注場中投注表場中投注時間表場中投注時刻表台灣運彩足球賠率台灣運彩場中

GMT+8, 2024-5-3 00:12 , Processed in 0.059224 second(s), 5 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表