题记
事实1.求谁能把谁吃掉
事实2.当\(dx\)为奇数时,如果非平局一定是alice吃掉bob,偶数同理
事实3.当吃掉事件发生时,两颗棋子的\(x\)和\(y\)一定相同
事实4.由于已知谁会吃谁会被吃,被吃的棋子要使二者的\(dy\)尽可能的大,吃的棋子要使\(dy\)尽可能地小,这样就有点像你追我赶的样子了
事实5.当碰到墙壁时,无法再逃脱,只能直线行驶
总结
根据y的初始位置作出你追我赶模型,看看经过\(\frac{d}{2}\)次移动后能不能追上,其中如果是alice追bob,alice的d要加一因为是先手
code
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int h,w,x1,x2,y1,y2;
cin>>h>>w>>x1>>y1>>x2>>y2;
if(x1>=x2)
{
puts("Draw");
continue;
}
if((x2-x1)%2)
{
int d=(x2-x1+1)/2;
if(y1<y2)
{
y1=min(w,d+y1);
y2=min(w,d-1+y2);
if(y1>=y2)puts("Alice");
else puts("Draw");
}
else
{
y1=max(1,y1-d);
y2=max(1,y2-d+1);
if(y1<=y2)puts("Alice");
else puts("Draw");
}
}
else
{
int d=(x2-x1)/2;
if(y1>y2)
{
y1=min(w,d+y1);
y2=min(w,d+y2);
if(y2>=y1)puts("Bob");
else puts("Draw");
}
else
{
y1=max(1,y1-d);
y2=max(1,y2-d);
if(y2<=y1)puts("Bob");
else puts("Draw");
}
}
}
return 0;
}
标签:y2,puts,int,Chip,x2,y1,x1,Eat
From: https://www.cnblogs.com/pure4knowledge/p/17969905