poj1740 博弈論,對稱博弈)

2021-09-18 07:16:21 字數 639 閱讀 8137

題目:有若干堆石子,每一次需要從一堆石子中拿走一些,然後如果願意的話,再從這堆石子中拿一些分給其它任意堆。不能操作的人負。

解析

實際上如果n為偶數,我們就可以把ta們兩兩配對 

轉換成只有兩堆石子的情況 

按照石子數從小到大排序,兩兩配對成一組,組與組之間互不影響

如果可以完美配對(配對後每一組都有兩堆石子數相等),後手必勝

如果不可以完美配對,先手可以將最多的變成和最少的相等 

然後利用差值去構造其它的堆使之完美配對,這樣先手同樣必勝

當n是奇數的時候,先手只需要把最大的那一堆拿走然後分配 

使剩下的偶數堆滿足完美配對即可,這樣就能保證必勝

綜上,只有當n為偶數且石子堆可以完美配對的情況下,先手必敗 

其餘情況下,先手必勝

#include#includeusing namespace std;

int a[109];

int main()

else

}if(fg) printf("0\n");

else printf("1\n");

} }return 0;

}

poj 1740 乙個博弈遊戲

題意 對於n堆石子,每堆若干個,兩人輪流操作,每次操作分兩步,第一步從某堆中去掉至少乙個,第二步 可省略 把該堆剩餘石子的一部分分給其它的某些堆。最後誰無子可取即輸。參考清晰明白 思路 首先我們考慮兩堆相等的情況,一定是誰取誰輸,因為對方永遠可以做對稱的操作。對於四堆,1 2堆相等,3 4堆相等的情...

博弈論(階梯博弈)POJ 1704

對階梯博弈的闡述 博弈在一列階梯上進行,每個階梯上放著自然數個點。兩個人進行階梯博弈,每一步則是將乙個集體上的若干個點 1 移到前面去,最後沒有點可以移動的人輸 證明方式 如這就是乙個階梯博弈的初始狀態 2 1 3 2 4 只能把後面的點往前面放 如何來分析這個問題呢 其實階梯博弈經過轉換可以變為n...

博弈論 Nim博弈

1.nim博弈的起源很早,至於歷史我們就不再說了,直接說它的使用場景。1 依舊是兩個人博弈,但是物品時n堆,每一堆有ai個。2 每個人可以挑選一堆取走若干個,但是不能不取。3 最先取完所有物品的人獲勝。4 結論 所以堆的物品的數量異或起來是0,先手必敗。2.乙個nim博弈的例項 nim博弈。乍一看這...