给一块n*m的巧克力,Alice只能垂直切,切成A*m和B*m,并且A+B=n,Bob只能横切,只能切成A*n和B*n,并且A+B=m。
对于n*n的这种巧克力,谁先切了第一刀,就直接让对方有切两刀的机会,所以Alice不可能去切这种巧克力,可以直接无视这种。
后一人会尽量选前一人切后小的一块切。
#include<algorithm> #include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> #include<cmath> using namespace std; typedef long long LL; int n,t; LL x,y; int main() { scanf("%d",&t); for (int i=1;i<=t;i++) { scanf("%d",&n); LL k1=0,k2=0; while (n--) { scanf("%lld%lld",&x,&y); while (x>1 && y>1) x>>=1,y>>=1,k1++,k2++; if (x==1) k2+=y-1; else k1+=x-1; } if (k1<=k2) printf("Case %d: Bob\n",i); else printf("Case %d: Alice\n",i); } return 0; }
【hdu3544】 Alice's Game
时间: 2024-11-06 07:28:29