Educational Codeforces Round 68 (Rated for Div. 2) D - 1-2-K Game(博弈)

🐱‍💻 🐱‍💻 🐱‍💻

1,假设没有k进行分析 —> 0是个必败点,3也是一个必败点(1,2/2,1);推广就可以知道只要是3的倍数就是必败点;
2,有k 分为两种情况:
(1)k%3 = 1和 k%3 = 2的情况,和走1,2步的一样,只是多了几倍的3,都是必败点还是和不存在k的情况一样的
(2)k%3 == 0的情况,
当下标比k小的时候,就回到了不存在k的情况,
下标大于等于k的时候,首先在下标等于k时,不是必败点,
下标为k+1时,如果走一步,那么就到了下标k,对手只要走k步就赢了,反过来当我们走k步,对手走一步也可以赢,
我们走2步时,因为我们的k是3的倍数,而在k以内的下标为3的倍数都是必败点,我们在k+1的下标往前走了2步所以,此时下标%3==2,所以k+1也是一个必败点,当下标为必败点时加上k+1也属于必败点,所以我们直接n%k+1,就可以把局面缩小到k以下,而k以下就相当不存在k(除了在k的时候不是必败点)

//假设没有k,必败点加必败点为必败点
signed main()
{
    int T;cin>>T;
    while(T--)
    {
        int n,k;cin>>n>>k;
        if(k%3==0)n%=(k+1);
        if(n%3==0&&n!=k) cout<<"Bob\n";
        else cout<<"Alice\n"<<endl;
    }
    return  0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值