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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[BZOJ1188/Luogu3185][HNOI2007]分裂游戏

發(fā)布時間:2025/6/17 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [BZOJ1188/Luogu3185][HNOI2007]分裂游戏 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目鏈接:

BZOJ1188

Luogu3185

博弈論。

首先,每一堆石子都是互相獨立,不影響的,那么就只需求解每一堆的\(SG\)函數(shù)\(Xor\)即可。

再想,對于每一堆石子,里面的每一個石頭都是互相獨立的,那么就只需求解一個石子的\(SG\)函數(shù),再用\(p_i\)\(Xor\)起來就得到了答案。

那么如果是奇數(shù)不變,偶數(shù)個則為\(0\)。

對于一個石子的\(SG\)函數(shù)暴力求即可。

妙啊喵啊

時間復(fù)雜度 \(O(Tn^3)\)

#include <cstdio> #include <cstring>int t,n,p[25],SG[25]; bool Bus[505];int main() {for(scanf("%d",&t);t--;){scanf("%d",&n);for(int i=1;i<=n;++i)scanf("%d",&p[i]);//這里用1~n編號for(int i=n;i>=1;--i){memset(Bus,0,sizeof Bus);for(int j=i+1;j<=n;++j)for(int k=j;k<=n;++k)Bus[SG[j]^SG[k]]=true;//后繼狀態(tài)mexfor(int j=0;j<=500;++j)if(!Bus[j])SG[i]=j,j=500;}int TSG=0,p1=0,p2=0,p3=0,Cnt=0;for(int i=1;i<=n;++i)if(p[i]&1)TSG^=SG[i];//是奇數(shù),只需xor一次if(TSG)for(int i=1;i<n;++i)for(int j=i+1;j<=n;++j)for(int k=j;k<=n;++k)if(!(TSG^SG[i]^SG[j]^SG[k]))//能使Xor和變?yōu)?(必敗){++Cnt;if(!p1)p1=i,p2=j,p3=k;}printf("%d %d %d\n%d\n",p1-1,p2-1,p3-1,Cnt);}return 0; }

轉(zhuǎn)載于:https://www.cnblogs.com/LanrTabe/p/10202994.html

總結(jié)

以上是生活随笔為你收集整理的[BZOJ1188/Luogu3185][HNOI2007]分裂游戏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。