SDOI2011 黑白棋 題解

2022-06-24 21:18:11 字數 699 閱讀 7226

題目鏈結

題意略首現發現對於一次單獨的遊戲,是乙個取石子遊戲:

共有 \(\frac\) 堆石子,每次取至多 \(d\) 堆,每堆若干個,是個 \(\text\) 遊戲。

結論:將每堆石子的個數用二進位制表示。如果過每一位 \(1\) 的個數都能被 \(d+1\) 整除後手必勝,否則先手必勝。

感性證明一下:

於是考慮如何計數,可以考慮 \(\binom\) 減去不合法方案數。

不合法方案數很好 dp ,對每一位考慮,滿足是 \(d+1\) 的倍數,挺顯然的。

注意 dp 時的邊界。

#include using namespace std;

const int n=10005,m=105,l=15,mod=1e9+7;

int n,k,d,ans,c[n][m],f[l][n];

signed main()

for(int i=0;i+1for(int j=0;j<=n-k;j++)

for(int x=0;j+k+(x

printf("%d\n",(c[n][k]-ans+mod)%mod);

return 0;

}

SDOI 2011 黑白棋 題解

題目傳送門 題目大意 有乙個 1 n 1 times n 1 n 的棋盤,上面有 k kk 顆棋子,一半白一半黑,並且相鄰棋子顏色不同,兩個人輪流操作,乙個人只能將白棋子右移,乙個人只能將黑棋子左移,每個人一次最多移動 d dd 顆棋子,問有多少種局面先手必勝 先手操作白棋子 將相鄰的一對黑白棋子看...

SDOI2011 染色 題解

題目大意 給定一棵有n個節點的無根樹和m個操作,操作有2類 1 將節點a到節點b路徑上所有點都染成顏色c 2 詢問節點a到節點b路徑上的顏色段數量 連續相同顏色被認為是同一段 思路 樹剖之後,維護其兩端的顏色 答案和標記即可。include include define n 100001 using...

黑白棋遊戲

黑白棋遊戲 time limit 10000ms memory limit 65536k total submit 9 accepted 5 case time limit 1000ms description 問題描述 黑白棋遊戲的棋盤由4 4方格陣列構成。棋盤的每一方格中放有1枚棋子,共有8枚白...