BZOJ5435: 取石子(博弈)(佔位)
阿新 • • 發佈:2018-11-15
5435: 取石子
Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 35 Solved: 10
[Submit][Status][Discuss]
Description
有 n 堆石子排成一行,第 i 堆石子的個數為 xi。 Alice 和 Bob 輪流取石子,每人每次從兩端的石子中選擇一堆取走,Alice 先手。 我們知道在傳統的取石子游戲中,sg 函式的值為每堆石子個數的異或和。 Alice 和 Bob 都希望自己取到的石子的異或和比對方大。你需要求出誰能獲勝。 有多組資料。Input
Output
每組資料一行一個字串表示答案,平局輸出 Draw。
Sample Input
32
3 3
2
3 5
3
4 4 4
Sample Output
DrawAlice
Bob
思路:設ans=所有數異或和。 如果ans=0,那麼無論A取到任何數x,B的數也是x,即是平局。
那麼我們考慮ans!=0,那麼ans的最高位為i,有(1<<i)一定是奇數個1,結果取決於這一位,我們按照a[]是否有(1<<i),把所有數換位0或者1。
然後現在題目變為了01串,有奇數個1,問輪流從兩端取,問先手是否能取到奇數個1。
然後?