題目:
題意:有3堆石子,石子數量分別為a,b,c,有兩個玩家,每次只能從任意一堆中取f個,這裡的f只能為fibnacci數,問是先手
勝
還是先手敗.
分析:由於石子的數量都在1000以內,那麼我們可以先預處理出1000以內的sg函式值,然後對於3堆石子,我們進行異或,如果為
0說明先手必敗,否則必勝,當然求sg函式的值用深搜就行了.
#include #include #include using namespace std;
const int n = 1005;
const int m = 25;
int fib[25];
int sg[n];
int mex(int x)
{ bool vis[m];
memset(vis,0,sizeof(vis));
for(int i=0;i
題目:
分析:本題基本上跟上體一樣,只是把3堆改為x堆,把取fibnacci數列顆石子改為取指定輸入的石子個數.那麼做法實際上一
樣,我們對輸入的序列進行排序,然後求出它們的sg函式的值,然後直接用即可.
#include #include #include #include using namespace std;
const int n = 10005;
const int m = 105;
int a[m];
int sg[n];
int n;
int mex(int x)
{ bool vis[m];
memset(vis,0,sizeof(vis));
for(int i=0;i
取石子(sg函式)
alice和bob有n桶石子,裡面有ai個,他們每次只能其中一某堆裡取奇數個,不能拿的人輸,alice總是先拿 1 n 200,1 ai 1e9 input 第一行為 n 第二行為 n個數 ai output 最後獲勝的人alice或bob sample input 33 2 1 sample ou...
石子遊戲 SG函式
problem description alice 和 bob 總喜歡聚在一起玩遊戲 t t 今天他 她 們玩的是一款新型的取石子遊戲。遊戲一開始有n堆石子,alice 和 bob 輪流取出石子。在每次操作中,遊戲者必須選擇其中的一堆石子,並作出下列的其中一種操作 1 移去整堆石子 2 假設石子堆中...
SG 分石子遊戲
時間限制 2000 ms 記憶體限制 65535 kb 難度 6 描述 閒來無事,zyc發明了一種遊戲,叫分石子遊戲,初始有d堆石子,每堆石子的數量已知。兩個人輪流分石子,可以選取這d堆石子中的任意一堆,然後把選中的這堆石子分成m堆 每堆石子數量都必須大於0 現在石子的堆數將變成d m 1堆,對方就...