专栏文章
题解:CF69D Dot
CF69D题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mingzj8i
- 此快照首次捕获于
- 2025/12/02 02:15 3 个月前
- 此快照最后确认于
- 2025/12/02 02:15 3 个月前
简单搜索题。
我们可以发现,翻转操作无意义。因为如果你翻转后必输,对手会毫不犹豫的再翻转回去。否则对手会不翻转,去拼那一线生机。
然后再根据“如果操作后对方怎么选都不能胜则必胜,否则必败”搜索即可。
代码:
CPP#include<bits/stdc++.h>
#define f(x,y) F[x+250][y+250]
#define int long long
using namespace std;
const int N=21,M=1000;
int x,y,n,d,dx[N],dy[N],F[M][M];
bool DFS(int x,int y)
{
if(x*x+y*y>d*d) return true;
if(f(x,y)!=-1) return f(x,y);
f(x,y)=0;
for(int i=1;i<=n;i++)
{
if(!DFS(x+dx[i],y+dy[i]))
{
f(x,y)=true;
break;
}
}
return f(x,y);
}
signed main()
{
scanf("%lld%lld%lld%lld",&x,&y,&n,&d);
memset(F,-1,sizeof(F));
for(int i=1;i<=n;i++)
scanf("%lld%lld",&dx[i],&dy[i]);
printf("%s\n",DFS(x,y)?"Anton":"Dasha");
return 0;
}
然后就过了。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...