我们将每一种情况的胜负状态打个表总结得出结论
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll k,n,m;
int Q;
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d%lld",&Q,&k);
for(int i=1; i<=Q; i++)
{
scanf("%lld%lld",&n,&m);
if(n%(k+1)==0||m%(k+1)==0)
{
puts("Alice");
}
else
{
int nmin=min(n,m);
int t=nmin/(k+1);
if(k!=1)
{
if(t%2==0)
{
if((n+m)%2)puts("Alice");
else puts("Bob");
}
else
{
if((n+m)%2) puts("Bob");
else puts("Alice");
}
}
else
{
if((n+m)%2) puts("Alice");
else if(n%2==0&&m%2==0) puts("Alice");
else puts("Bob");
}
}
}
}
return 0;
}