日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BZOJ1299 [LLH邀请赛]巧克力棒

發布時間:2023/12/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ1299 [LLH邀请赛]巧克力棒 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

怎么又是博弈論。。。我去

Orz hzwer,這道題其實是可以轉化成Nim游戲的!

"第一步:

先從n根巧克力棒中取出m(m>0)根,使得這m根巧克力棒的xor和為0,同時使得剩下的n-m根巧克力棒無論怎么取,xor和都不為0。

m根巧克力棒的xor和為0 <=>把nim游戲的必敗狀態留給對方

剩下的n-m根巧克力棒無論怎么取,xor和都不為0 <=>? m為巧克力棒的xor和為0的最長子序列

第二步:

第一步以后,對手就面臨一個必敗狀態的nim游戲。

如果他從n-m根中取新的巧克力棒,實際上就是新建一個xor和不為0的nim游戲,這時輪到己方操作只要將這個新的nim游戲取到xor和為0即可。

也就是讓對方再次面臨所有nim游戲均為必敗狀態的局面。"

于是只要尋找m是否存在即可,由于n = 14,深搜即可。

?

1 /************************************************************** 2 Problem: 1299 3 User: rausen 4 Language: C++ 5 Result: Accepted 6 Time:8 ms 7 Memory:804 kb 8 ****************************************************************/ 9 10 #include <cstdio> 11 12 using namespace std; 13 int n, a[20]; 14 bool flag; 15 16 inline int read(){ 17 int x = 0, sgn = 1; 18 char ch = getchar(); 19 while (ch < '0' || ch > '9'){ 20 if (ch == '-') sgn = -1; 21 ch = getchar(); 22 } 23 while (ch >= '0' && ch <= '9'){ 24 x = x * 10 + ch - '0'; 25 ch = getchar(); 26 } 27 return sgn * x; 28 } 29 30 void dfs(int x, int cnt, int X){ 31 if (x == n + 1){ 32 if (!X && cnt) flag = 1; 33 return; 34 } 35 if (flag) return; 36 dfs(x + 1, cnt, X); 37 if (flag) return; 38 dfs(x + 1, cnt + 1, X ^ a[x]); 39 } 40 41 int main(){ 42 for (int t = 1; t <= 10; ++t){ 43 flag = 0; 44 n = read(); 45 for (int i = 1; i <= n; ++i) 46 a[i] = read(); 47 dfs(1, 0, 0); 48 printf(flag ? "NO\n" : "YES\n"); 49 } 50 return 0; 51 } View Code

?

轉載于:https://www.cnblogs.com/rausen/p/4052548.html

總結

以上是生活随笔為你收集整理的BZOJ1299 [LLH邀请赛]巧克力棒的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。