d为1代表Alice执刀,-1代表Bob执刀
记录蛋糕数字为奇数和偶数各自的数量,先看偶数块

如果为偶数的蛋糕为奇数块,则为偶数的蛋糕切完后是Bob持刀,Alice会多吃1,此时要将奇数块蛋糕-1(假设此时有为奇数的蛋糕,如果没有根据题意依然是Alice赢)

如果为奇数的蛋糕为奇数块,两人每次切时对方都会多1,,中和后即对2取余,若取余结果为0说明两人在这一部分吃的一样多,否则Alice会多持刀一次,Bob会多吃1

最后,如果Bob吃得多,Bob赢,反之(包括平局),Alice赢
且若有蛋糕数字为1时,这是“不能切的蛋糕”,不算入计数

#include<stdio.h>
int main(){
    int T,t,n,i,d,d0,d1,s;
    while(scanf("%d",&T)!=EOF)
        for(t=0;t<T;t++){
            scanf("%d",&n);
            s=d0=d1=0;
            for(i=0;i<n;i++){
                scanf("%d",&d);
                if(d==1)
                    continue;
                if(d%2)
                    d1++;
                else
                    d0++;
            }
            if(d0%2&&d0>0)//如果为偶数的蛋糕为奇数块,Alice会吃得多
                d1--,s++;
            if(d1%2&&d1>0)//如果为奇数的蛋糕为奇数块,Bob会吃得多
                s--;
            if(s<0)
                printf("Bob\n");
            else
                printf("Alice\n");
        }
    
    return 0;
}

 

相关文章:

  • 2021-11-26
  • 2021-09-21
  • 2021-08-16
  • 2021-10-22
  • 2021-06-14
  • 2021-11-18
  • 2022-01-24
猜你喜欢
  • 2021-09-18
  • 2022-12-23
  • 2022-03-09
  • 2021-09-11
  • 2021-10-03
  • 2021-08-19
  • 2022-12-23
相关资源
相似解决方案