Playing with Superglue题解
原题传送门
这道题我们可以用模拟的方式来找规律。
我们可以得到——
若棋子曼哈顿距离分别为
d1>=3&&d2>=4||(d1>4||d2>4)
那么输出“
为什么呢?
可以这样理解,先手和后手的目标是使两点重合。如果横向或纵向的距离差不足
如果横向和纵向的距离差至少为
当横向和纵向的距离差都大于
因此,需要满足上述条件才能让先手获胜。如果不满足这些条件,后手有可能利用先手某些操作的局限性,最终获得胜利。
知道了规律,我们就能轻松地做对这道题了,时间复杂度为
代码:
#include<bits/stdc++.h>
using namespace std;
int n,m,x1,x2,y1,y2,d1,d2;
int main()
{
scanf("%d%d%d%d%d%d",&n,&m,&x1,&y1,&x2,&y2);
d1=abs(x1-x2);
d2=abs(y1-y2);
if(d2<d1) swap(d1,d2);
if(d1>=3&&d2>=4||(d1>4||d2>4))
printf("Second\n");
else printf("First\n");
return 0;
}
/*
if(d1>=3&&d2>=4||(d1>4||d2>4))
printf("Second\n");
else printf("First\n");
可以改成:
printf("%s\n",d1>=3&&d2>=4||(d1>4||d2>4)?"Second":"First");
*/