题意
在大小的棋盘中,对
位置的棋子进行操作,向上1或2格,向左1或2格。最终无法移动棋子的人输。
题解
根据SG定理画出NP点的转移图
SG定理
P点(必胜点):即处于此位置,在双方无失误情况下此方必胜
N点(必败点):即处于此位置,在双方无失误情况下此方必败
转移:
1.对于所有必胜点,一定存在至少一种情况在下一步进入必败点
2.对于所有必败点,在所有情况下的下一步均进入必胜点。
本题的转移图如下:
在图中可看到,此图是关于左上-右下对角线对称的,所以只关注左下三角即可。发现当且仅当y与x坐标之差为3的倍数或0时,为必败点。
code
#include <bits/stdc++.h> #define reg register #define ll long long #define ull unsigned long long #define pii pair<int,int> #define inf 0x3f3f3f3f #define eps 1e-8 #define pi acos(-1.0) #define e exp(1.0) #define ios ios::sync_with_stdio(false) #define rep(i,l,r) for(int i=(l);i<(r);i++) using namespace std; const int maxn = 2e5 + 10; const int mod = 1e9 + 7; int main() { ios; int t; cin>>t; while(t--){ ll n,m; cin>>n>>m; if(n > m) swap(n,m); if((m - n) % 3 == 0) puts("awsl"); else puts("yyds"); } return 0; }