我们将每一种情况的胜负状态打个表总结得出结论

#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;
}