一个排列,每个位置i走到的位置j满足:1、a[j]>a[i], 2、(j-i)是a[i]的倍数。问从每个位置开始,是否有必胜策略
题解
- 显然O(nlogn)可以预处理出所有点可以到达的点。
- 考虑博弈中必胜态和必败态的定义。
- 必胜态:必胜态的后继状态中存在至少一个必败态(这样处于必胜态,走一步到达必败态使得对手处于必败态)。
- 必败态:必败态的后继状态全是必胜态。
- 要从小到大枚举初始的必败态,否则有些状态处理不到
代码
1 |
|
Success and failure are temporary.
一个排列,每个位置i走到的位置j满足:1、a[j]>a[i], 2、(j-i)是a[i]的倍数。问从每个位置开始,是否有必胜策略
1 | #include<bits/stdc++.h> |