sgu 153 分类: sgu templates 2015-04-26 16:35 32人阅读 评论(0) 收藏
2015-04-26 16:35
645 查看
博弈游戏,一开始想搞 sg 函数,结果搞不出。。。
然后发现序列状态很少,于是写了一个 Floyd 判圈算法找周期。
毕竟第一次写 Floyd判圈,wa了四次,好不容易才ac啊。。。
然后发现序列状态很少,于是写了一个 Floyd 判圈算法找周期。
毕竟第一次写 Floyd判圈,wa了四次,好不容易才ac啊。。。
#include<map> #include<stack> #include<queue> #include<ctime> #include<cmath> #include<string> #include<cstdio> #include<cstdlib> #include<cstring> #include<utility> #include<iostream> #include<algorithm> #define Mod(x) (((x)+MAXP)%MAXP) const int MAXM = 12,MAXP = 12; int k, n, m ,p[MAXM] = {0}; char str[2][30] = {"SECOND PLAYER MUST WIN","FIRST PLAYER MUST WIN"}; struct Status { int s[MAXP],sp; void Trans() { s[Mod(++sp)] = 0; for(int j = 0; j <= m && !s[Mod(sp)]; j++) if(sp >= p[j]) s[Mod(sp)] = 1 ^ s[Mod(sp - p[j])]; } }st = {{1,0},0}, f ,g ; bool equal(const Status &a,const Status &b) { if(!(a.sp >= p[m] && b.sp >= p[m])) return false; for(int c = 0; c < p[m] ; c++) if(a.s[Mod(a.sp-c)]^b.s[Mod(b.sp-c)]) return false; return true; } int main() { #ifndef ONLINE_JUDGE freopen("sgu153.in","r",stdin); freopen("sgu153.out","w",stdout); #endif std::cin >> k; while(k--) { memset(p,0,sizeof(p)); std::cin >> n >> m; p[0] = 1; for(int i = 1; i <= m; i++) std::cin >> p[i]; std::sort(p ,p + m + 1); int T = 0, step; f = g = st; do{f.Trans(),g.Trans(),g.Trans(); }while(!equal(f,g)); do{g.Trans(); T++; }while(!equal(f,g)); if(n < f.sp) f = st, step = n; else step = (n-f.sp)%T; for(int i = 1; i <= step; i++) f.Trans(); std::cout << str[f.s[Mod(f.sp)]] << std::endl; } #ifndef ONLINE_JUDGE fclose(stdin); fclose(stdout); #endif }
相关文章推荐
- sgu 179 分类: sgu 2015-03-11 21:25 32人阅读 评论(0) 收藏
- sgu200 分类: sgu 2015-05-25 18:53 32人阅读 评论(0) 收藏
- sgu 175 分类: sgu 2015-03-08 16:35 53人阅读 评论(0) 收藏
- sgu131 分类: sgu 2015-03-13 22:27 32人阅读 评论(0) 收藏
- sgu 271 分类: sgu templates 2015-06-27 10:05 22人阅读 评论(0) 收藏
- NYOJ-32 组合数 AC 分类: NYOJ 2013-12-30 07:42 189人阅读 评论(0) 收藏
- sgu124 分类: sgu 2015-02-15 16:02 56人阅读 评论(0) 收藏
- sgu 148 分类: sgu 2015-03-11 13:14 49人阅读 评论(0) 收藏
- ubuntu 12.04修改环境变量PATH的方法 分类: ubuntu 2013-04-08 16:35 1330人阅读 评论(0) 收藏
- 嵌入式linux------SDL移植(am335x下显示yuv420) 分类: TI-AM335X arm-linux-Ubuntu ffmpeg-SDL-VLC-Live555 2015-07-28 16:35 136人阅读 评论(0) 收藏
- sgu 159 分类: sgu 2015-05-14 13:13 37人阅读 评论(0) 收藏
- sgu 111 分类: sgu 2015-02-09 14:35 123人阅读 评论(0) 收藏
- 【JAVA编码专题】UNICODE,GBK,UTF-8区别 分类: B1_JAVA 2015-02-10 21:07 153人阅读 评论(0) 收藏
- sgu224 分类: sgu 2015-06-12 10:42 19人阅读 评论(0) 收藏
- sgu 174 分类: sgu 2015-03-07 23:36 34人阅读 评论(0) 收藏
- sgu180 分类: sgu 2015-03-08 17:55 36人阅读 评论(0) 收藏
- sgu 228 分类: sgu 2015-06-21 17:10 25人阅读 评论(0) 收藏
- sgu 140 分类: sgu 2015-03-15 16:22 35人阅读 评论(0) 收藏
- iOS中UITextField 使用全面解析 分类: ios技术 2015-04-10 14:37 153人阅读 评论(0) 收藏
- sgu 190 分类: sgu 2015-04-25 13:03 31人阅读 评论(0) 收藏