2012 Multi-University Training Contest 8
水题一道
❤思路
只有一个限制条件会让 Alice 或者 Bob 输掉。就是 + 新的数的时候超过了规定的总数大小。而有一个条件限制了她们选择 + 或者 - 。那就是选择的减去的数使得它们得到的数 <= Ci-2。所以对于要赢的人来说,她会选择最小的数来 - ,选择一个数让对方只能继续 + 。
综合上述条件,每个人都会选择最小的数进行 + 运算。这样,对手就只能继续 + 。因为即使她选择了最小的,也无法进行 - 运算,使得 Ci > Ci-2。
所以只有最小的那个数有用。其他数字都没有用。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int x[110];
int t,n,m;
int main(){
scanf("%d",&t);
int ans;
int min;
for(int j=1;j<=t;j++){
scanf("%d%d",&n,&m);
min=1000010;
for(int i=0;i<m;i++){
scanf("%d",&x[i]);
if(min>x[i]){
min=x[i];
}
}
ans=n/min+1;
if(ans%2==0)
printf("Case #%d: Bob\n",j);
else
printf("Case #%d: Alice\n",j);
}
return 0;
}