1. 程式人生 > >牛客練習賽 17 T6 玩遊戲 神博弈

牛客練習賽 17 T6 玩遊戲 神博弈

文章目錄


作為T6,思想高妙,好題.

題意

a ,

b , a b
. A l i c e ,
a , a , b . a = b , A l i c e , B o b . , . 給兩個字串a,b,a的長度大於等於b.\newline 由Alice先手,兩人輪流去掉a的首字元或者尾字元,直到a,b長度相同.\newline 如果剩下的a=b,Alice獲勝,否則Bob獲勝.\newline 問兩人都取最優策略,誰能夠獲勝.

題解

感謝LMOliver的高妙解釋.
我們將題目轉化成如下的模型.
把字串 a a 轉化為一條長度為 a |a| 的紙帶,如果 a a 從第 i i 位開始能夠匹配 b b ,則紙帶的第 i i 位塗成黑色,否則塗成白色.
那麼要問的就是兩人輪流剪掉紙帶的最左邊的格子或者最右邊的格子,最終能否使得紙帶最左邊的格子為黑的情況.
我們不妨分類討論.
首先定義一種策略叫反向,即每次剪掉和對方上一輪方向相反的格子.
如果去掉字元的個數是奇數,則先手考慮第一次隨機剪去一個方向的格子,接下來每輪都反向,而且不管他的目標是什麼,他接下來都會無腦反向,因為Ta深知對方也會這麼做.
這時候前面不管,考慮還剩中間3個格子的情況.
那麼這時候如果中間那個格子是黑色或者左右都是黑色,Alice就會獲勝,否則Bob獲勝.
同理是偶數的情況是剩下中間兩個格子,除非這兩個格子都是黑色,否則Bob獲勝.
暴力對這幾個位置判一下 a a 是否能在這個位置匹配 b b 即可.
程式碼就不發了,謝謝大家.