CF786题解
CF786https://img-blog.csdnimg.cn/img_convert/e1db779b9fb239527649d41aa8692c97.jpeg
我不会告诉你链接在图片里
CF786A
https://img-blog.csdnimg.cn/img_convert/573c7a92dd9633562bb04b7fc8105d7f.png
CF786A题意
给出一个大小为 \(n\) 的环,点顺时针从 \(1\to n\) 编号,两个人(设为 \(0,1\))轮流移动其中的一个棋子。
对于第 \(opt\) 人,他能够将这个棋子顺时针移动 \(x\in S_{opt}\)(\(S_{opt}\) 是提前给出的)个步数,当某个人将棋子挪到 \(1\) 时这个人获胜。
问对于每一个位置和先手,要求你判断先手必胜,后手必胜还是死循环。
\(n\le 7000\)
CF786A题解
首先我们知道,博弈论有一个性质,就是对于一种状态 \(sta\),如果它所有能到达的状态都是必胜,那么这个状态必败,否则必胜。
首先我们知道 \(1\) 位置必败,于是就可以尝试倒着推情况。
记搜即可。
CF786A代码
#includeusing namespace std;inline int read(){ int x = 0, f = 1;char ch = getchar(); while(ch < '0' || ch > '9'){if(ch == '-') f = -1;ch = getchar();} while(ch >= '0' && ch
页:
[1]