1 条题解
-
0
1. Description
给一个正多边形的顶点,两个玩家在自己的回合分别选择两个顶点连线,要求这条线不得于之前的任何一条线相交,如果这个玩家的回合后图中出现了三角形,那么这个玩家胜利。
2. Solution
我们手玩几个图形之后显然可以得到一个结论:如果在之前的回合中 这条线被连了,那么后面的玩家都不会使用 或 连接,否则就会输,那么这个问题就转换为了一个经典的 Nim 博弈问题,初状态显然:。
那么 $SG(n)=\operatorname {mex}(\{SG(i)\bigoplus SG(n-2-i)\}) (0\le i\le n-2)$,可以使用一个 的算法解决这个问题。
但是这样显然无法拿到满分,根据博弈题常见的套路,直接打表,使用瞪眼法可以得到结论:从 开始,每 项为一个周期,所以打一个表,然后就可以 的解决问题了。
3. Code
/*by qwer6*/ /*略去缺省源与快读快写*/ const bool f[]={0,0, 1,1,1,0,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,1,1,0, 1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,1,1,1, 1,1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,1,1,1}; int n; signed main(){ int t; read(t); while(t--){ read(n); if(n<=69)puts(f[n]?"Lucija":"Ivan"); else puts(f[(n-70)%34+70]?"Lucija":"Ivan"); } }
- 1
信息
- ID
- 7524
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 5
- 已通过
- 2
- 上传者