wythoff game
時間限制:
1000
ms |
記憶體限制:
65535
kb
難度:
1
描述
最近
zkc同學在學博弈,學到了乙個偉大的博弈問題
--威佐夫博弈。
相信大家都學過了吧?沒學過?沒問題。我將要為你講述一下這個偉大的博弈問題。
有兩堆石子,數量任意,可以不同。遊戲開始由兩個人輪流取石子。
遊戲規定,每次有兩種不同的取法:
一是可以在任意的一堆中取走任意多的石子;
二是可以在兩堆中同時取走相同數量的石子。
最後把石子全部取完者為勝者。
我們今天要做的是求前
n個必敗態。
什麼是必敗態?比如我們把(a,
b)稱為一種狀態,a,
b分別為兩堆石子中所剩的數目。如果
a=0,
b=0,我們說該種狀態為必敗態,因為我不能再進行遊戲,即使是可以進行,那也是必敗的,你知道,遊戲的我們都是非常聰明的。(
0,0)(
1,2)(
3,5)
...都是必敗態,我們今天要做的就是求前
n個必敗態。不會?好吧!
我再告訴你:假設第
n個必敗態為(a,
b)a為前
n-1個必敗態中沒有出現的最小自然數,
b=a+n
。這下大家應該明白了吧。好吧,我們的任務就的要前
n個必敗態。規定第
0個必敗態為(
0,0)。
輸入
多組資料。
輸入為乙個數n(
0<=n<=100000
)。
輸出
按照要求求出前
n個必敗態。輸出格式看下面樣例。
樣例輸入
3
1
樣例輸出
(0,0)(1,2)(3,5)(4,7)
(0,0)(1,2)
提示
注意:每種情況中間沒有空格
思路:
就是運用的威佐夫博弈的原始定義。bk=ak+k;ak=(1+sqrt(5))/2*k;
就是簡單的暴力列舉。
**如下:
#include#includestruct sits[100100];
void f()
}int main()
puts("");
} return 0;
}
Butterfly 列舉 暴力
原題 這裡有點暴力的感覺,但是有乙個卡資料,所以這裡加了一點點優化就ac了。先得到每乙個點的,以此點向左上角 zs 走,右上角 ys 走,左下角 zx 走,右下角 yx 走分別可以走多少個 x 再進行判讀以這個點為中心的左右兩邊 l 是否是大於等於本應該有的長度。這裡有乙個小優化,就是求出最大的 l...
10 暴力列舉
暴力是一種有著特殊美學意義的事物,對於許多東西,在需要進行計算的時候,將其所有的組合給排列出來也是一種很好的選擇,今天的題目,是乙個希望計算火柴可以擺出的等式的個數 題目如下 挺麻煩的地方在於,每乙個數需要的火柴數其實是沒有規律的,在想要得到乙個等式的話,就要有可以將所有火柴轉換成數字的乙個陣列 於...
暴力列舉 烤雞
現在,hanke 想要知道,如果給你乙個美味程度 n 請輸出這 10 種配料的所有搭配方案。乙個正整數 n,表示美味程度。第一行,方案總數。第二行至結束,10 個數,表示每種配料所放的質量,按字典序排列。如果沒有符合要求的方法,就只要在第一行輸出乙個 0。輸入樣例 輸出樣例 101 1 1 1 1 ...