hdu 3544 Alice's Game 博弈论

博弈论+二分!

后一人会尽量选前一人切小的一块切!!

代码如下:

 

 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\n",++k,m1>m2?"Alice":"Bob");
24     }
25     return 0;
26 }
View Code

 

 

 

posted @ 2013-08-14 22:25  _随心所欲_  阅读(259)  评论(0编辑  收藏  举报