魔法球(博弈論)

2022-09-01 13:51:13 字數 1115 閱讀 3166

time limit: 1 sec  memory limit: 128 mb

submit: 15  solved: 12

[submit][status][web board]

freda和rainbow是超自然之界學校(preternatural kingdom university,簡稱pku)魔法學院的學生。為了展示新學的魔法,ta們決定進行一場對弈~~~

起初freda面前有n堆魔法珠,其中第i堆有ai顆。freda和rainbow可以輪流進行以下操作:

1.選擇n堆中魔法珠數量大於1的任意一堆。記該堆魔法珠的數量為p,p有b1、b2……bm這m個小於p的約數。

2.施展魔法把這一堆魔法珠變成m堆,每堆各有b1、b2……bm顆魔法珠。

3.選擇這m堆中的一堆魔法珠,施展魔法令其消失。

注意一次操作過後,魔法珠的堆數會增加m-2,各堆中魔法珠數量的總和可能會發生變化。

當輪到某人操作時,如果每堆中魔法珠的數量均為1,那麼ta就輸了。

freda和rainbow都採取最好的策略,從freda開始。請你**一下,誰能獲勝呢?

本題僅有乙個測試點,包含多組資料,以eof結尾。

每組資料的第一行包含乙個整數n。

第二行包含n個整數ai。

對於每組資料,在兩人均採取最佳策略的前提下,若freda能獲勝,輸出freda;若rainbow能獲勝,輸出rainbow。

3

2 2 2

31 3 5

freda

rainbow

#include#include

#include

using

namespace

std;

const

int maxn=10000+10

;int

f[maxn],v[maxn],num,ans,a[maxn];

int sg(int

x) }

for (i=1;i*i<=x;i++)

}for (i=0;v[i]==now;i++);

return f[x]=i;

}int

main()

return0;

}

魔法遊戲 博弈論

題目大意 給一顆樹,每個位置有乙個權值,每次乙個人可以選擇森林中的某棵樹的根節點,設其權值為a aa,那麼這個人可以選擇乙個k 2,a 1 k in 2,a 1 k 2,a 1 然後讓a aa變成 ak left lfloor frac ak right rfloor ka 如果乙個點權值變為0那麼...

2012藍橋杯 取球博弈 基礎博弈論

取球博弈 今盒子裡有n個小球,a b兩人輪流從盒中取球,每個人都可以看到另乙個人取了多少個,也可以看到盒中還剩下多少個,並且兩人都很聰明,不會做出錯誤的判斷。我們約定 每個人從盒子中取出的球的數目必須是 1,3,7或者8個。輪到某一方取球時不能棄權!a先取球,然後雙方交替取球,直到取完。被迫拿到最後...

博弈論 Nim博弈

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