有n堆石子
·從某堆石子中取走乙個
·合併任意兩堆石子
不能操作的人輸。
100%的資料滿足t<=100, n<=50. ai<=1000
容易發現基礎運算元$d=\sum a_i +n-1$
沒有個數為1的堆還好說,有的話@#$%^&好麻煩啊啊啊啊啊怎麼可能找規律
然後看題解,woc記憶化搜尋
$f(i,j)$表示i個個數為1的堆,其他運算元為j的勝負態
列舉操作轉移就行了,一定要列舉對!注意$j=1$時
#include #include#include
#include
#include
using
namespace
std;
typedef
long
long
ll;const
int n=51,m=50055
;inline
intread()
while(c>='
0'&&c<='9')
return x*f;
}int
n,f[n][m];
int dfs(int a,int
b)int
main()
if(y) y--;
puts(dfs(x,y) ? "
yes" : "no"
); }
}
BZOJ3895 取石子(博弈 記搜)
傳送門 我們可以通過石子的堆數和每一堆的個數計算出剩餘的運算元,顯然運算元為奇先手必勝,為偶先手必敗。若將 1的石子堆單獨考慮,對於若干堆 1的石子,運算元為 n i 1x i 那麼我們可以記f a b 表示有a堆 1的石子,1的石子運算元為b的狀態 1表示先手必勝,0表示先手必敗 然後進行記搜,對...
bzoj 3895 取石子(博弈 記憶化搜尋)
time limit 1 sec memory limit 512 mb submit 267 solved 130 submit status discuss alice和bob兩個好朋含友又開始玩取石子了。遊戲開始時,有n堆石子 排成一排,然後他們輪流操作 alice先手 每次操作時從下面的規則...
bzoj3895 取石子(博弈論,記憶化搜尋)
time limit 1 sec memory limit 512 mb submit 361 solved 177 submit status discuss alice和bob兩個好朋含友又開始玩取石子了。遊戲開始時,有n堆石子 排成一排,然後他們輪流操作 alice先手 每次操作時從下面的規則...