[BZOJ1299][LLH邀請賽]巧克力棒
阿新 • • 發佈:2018-12-29
https 一起 pre amp clu www. scan spa lin
題目鏈接:
BZOJ1299
首先,第一步只能從其中選一些巧克力棒,那麽就要使這些巧克力棒的\(xor\)和為\(0\)。
然後\(X\)就面臨了一個必敗狀態。
若\(X\)選擇繼續拿巧克力棒,使\(xor\)和不為\(0\),則\(TBL\)又可以把\(xor\)和吃成\(0\)。
若\(xor\)和為\(0\),那麽\(TBL\)第一步就可以一起拿出,使\(X\)沒有機會。
那麽就只需要判斷是否有子序列\(Xor\)和為\(0\)。
\(DFS\)就好了。
時間復雜度 \(O(10*2^n)\)
#include <cstdio> int n,l[15]; bool DFS(int p,int c,int s) { if(c&&!s)return true; if(p>n)return false; return DFS(p+1,c,s)||DFS(p+1,c+1,s^l[p]); } int main() { for(register int i=1;i<=10;++i) { scanf("%d",&n); for(int j=1;j<=n;++j)scanf("%d",&l[j]); puts(DFS(1,0,0)?"NO":"YES");//輸出是反的。。 } return 0; }
[BZOJ1299][LLH邀請賽]巧克力棒