HY 的懲罰 Trie 樹,博弈論

2022-04-30 09:03:09 字數 1405 閱讀 3676

【問題描述】

hy 抄題解又被老師抓住了,現在老師把他叫到了辦公室。 老師要 hy 和他玩乙個遊

戲。如果 hy 輸了,老師就要把他開除資訊組;

遊戲分為 k 輪。在遊戲開始之前,老師會將 n 個由英文本母組成的字串放入箱子。

每局開始,字串為空串,然後兩人輪流在末尾追加字元,保證新的字串為箱子中某

字串的字首,直到有乙個人不能操作,不能操作的那個人就輸掉當前的一輪。新一輪

由上一句輸的人先手。最後一局贏的人獲勝。

假定老師和 hy 都能採取最優的策略,且老師為了彰顯自己的大度讓 hy 先手,求 hy 能否

獲勝。【輸入格式】

輸入包括多組資料,輸入以文字流結尾(eof)為結束。

每組資料的第一行包含兩個整數 n, k,分別表示放入箱子字串的數量和遊戲的輪

數。接下來 n 行,每行乙個字串表示由英文本母組成的句子。

【輸出格式】

每組資料第一行,輸出 hy 是否能贏,若能贏輸出」hy wins!「,否則輸出」teacher

wins!」。

【樣例輸入 1】

2 3a

b3 1ab

c【樣例輸出 1】

hy wins!

hy wins!

【樣例輸入 2】

1 2ab

【樣例輸出 2】

teacher wins!【評測用例規模與約定】

對於 40%的評測用例,1≤n≤10,1≤k≤10 4 ;

對於 100%的評測用例,1≤n≤10 5 ,1≤k≤10 9 ,保證所有字串總長度不超過 10 5 ,資料組

數不超過 10

先把所有的字串插入 trie 樹,然後就是博弈論了。

博弈論分為三種情況:

1.若先手無必勝策略即先手必敗則先手一直先手,最後一局後手勝;

2.若先手有必勝策略則下一局成後手,即為勝敗交替,此時,最後一句的勝敗決定於 k 的奇

偶性;3.先手有必勝策略有必敗策略,則先手前 k-1 局敗,最後一局先手勝。

考慮 \(dp\) 轉移 ,\(f[i]\) 代表當前節點是否能肯定贏,\(f[i]\) 代表當前節點是否能肯定輸。

然後按部就班轉移即可。

#include#define n 100001

#define ll long long

using namespace std;

int ch[n][26],cnt;

void insert(string s)

dfs(0,0,0);

if(pd[0]!=1)

if(pd[0]==1&&pd[0]==0)

if(pd[0]==1&&pd[0]==1)

cout<<"hy wins!"<} return 0;

}

字串遊戲 博弈論 trie

從前有個遊戲。遊戲分為 k 輪。給定乙個由小寫英文本母組成的字串的集合 s,在每輪遊戲開始時,雙方會得到乙個空的字串,然後兩人輪流在該串的末尾新增字元,並且需要保證新的字串是 s 中某個串的字首,直到有一方不能操作,則不能操作的一方輸掉這一輪。新的一輪由上一輪輸的人先手,最後一輪贏的人獲得遊戲勝利。...

《博弈論的詭計》

吠犬不咬人 對這個世界的最好描述可能只有其本身。囚徒困境 下下人有上上之智。根據情況可列寫博弈收益矩陣,太精明往往會壞事哦,精明不等於高明哦。重複博弈 在車站這樣人群流動性大的地方,不但商品和服務質量差,而且假貨橫行。對未來的預期是我們行為的重要因素。每一次的人際交往其實都可以簡化為兩種基本選擇 合...

python博弈論 博弈論(七) 隱藏的投票權重

博弈論 七 隱藏的投票權重 收錄於話題 博弈論 8個產品經理萬萬沒有料到,因為自己的一筆感謝費,後端和研究員打了起來。事情是這樣的,x3專案開發完成。在這個專案上,後端投入了30天,研究員投入了50天。這個專案本來是沒有產品經理的,但是由於公司報專案需要填寫產品經理,所以就把她填了上去。沒想到x3專...