poj2315 可一次性操作多組的nim

2021-08-28 16:55:58 字數 796 閱讀 2614

定義:只有一堆石子,兩人輪流取,最少取乙個,最多取m個,最後去完者為勝。

思考:①當石子個數n=0時為必敗點;(根據題意得來)

②當石子個數0③當石子個數n=m+1時為必敗點;(只能到達狀態②)

④當石子個數m+1⑤當石子個數n=(m+1)+m+1時為必敗點;(只能到達狀態④)

當n為m+1的整數倍時為必敗點

把n寫成這樣的格式:n=r*(m+1)+s;

只要s不為0,即可勝。

思路:對於每個堆來說最少取乙個,最多取l個,這是乙個典型的巴什博弈模型,所以最後決定勝敗的只取決於a[i]%(l+1)的值,為0則表示必敗,否則必勝。

由於總共有n堆,每次最多只能取m堆進行操作。所以上面的模型可以轉換成為nim game。本來如果沒有m堆這個條件,直接a[1]^a[2]......^a[n]即可

但現在(創新)可以這麼做,其實異或只是每個位的半加運算,現在把每一位都加起來。mod (m+1)不就可以了。(雖然我不知到為什麼這樣就可以了,以後討論吧,先記住結論)

#include#include#include#includeusing namespace std;

const double pi=acos(-1.0);

int s[50],xr[50];

int n,l,m,r;

int solve()

} for(int i=1;i<=30;i++)

return 0;

}int main()

return 0;

}

檔案操作 一次性產生多個檔案

函式原型為 int sprintf char str,const char format,1 根據格式從字串中提取資料。如從字串中取出整數 浮點數和字串等。2 取指定長度的字串 3 取到指定字元為止的字串 4 取僅包含指定字符集的字串 5 取到指定字符集為止的字串 其實說白了,這個函式用法跟prin...

轉貼 一次性安裝php的軟體

一次性安裝php的軟體 foxserv 開發商http www.foxserv.net apache2triad 開發商http apache2triad.sourceforge.net wamp 開發商http www.e novative.de mysql 3.23.49 phpmyadmin ...

全域性一次性引用寫好的元件

我們寫好了元件,接下去肯定還要引入和使用。但是你寫的元件一旦多起來,在每乙個個地方都需要去引用是一件很麻煩的事情,所以我們將一次性全域性引入 important componenta from componenta important componentb from componentb impor...