博弈论+二分!
后一人会尽量选前一人切小的一块切!!
代码如下:
1 #include<iostream> 2 #include<stdio.h> 3 #define I1(x) scanf("%d",&x) 4 #define I2(x,y) scanf("%d%d",&x,&y) 5 int main(){ 6 int n,t,k=0,a,b; 7 __int64 m1,m2; 8 I1(t); 9 while(t--){ 10 I1(n); 11 m1=m2=0; 12 for(int i=1;i<=n;i++){ 13 I2(a,b); 14 while(a>1&&b>1){ 15 a>>=1; 16 b>>=1; 17 m1++; 18 m2++; 19 } 20 if(a==1) m2+=b-1; 21 else m1+=a-1; 22 } 23 printf("Case %d: %s ",++k,m1>m2?"Alice":"Bob"); 24 } 25 return 0; 26 }