数学思路来自:洛谷大佬
#include#include #include #include using namespace std; //不能被看似博弈的吓退啊,要用小学附加题想一想 int main() { int n,*a,sum=0; cin >> n; a = new int[n+1]; //如在满足ai>ai-1下取石子(i和i-1都为下标),定会形成一种情况:所有石子数相同,陷入僵局。 //由于a0=0,所以可以取a1的石子,这样就打破了僵局。而后可能会再次形成情况:所有石子数相同,陷入僵局。 //只要重复取a1的石子,直到所有石子数都为零。 //所以相当于所有的石子都可以取。那么若Alice要赢,石子数要为奇数,否则bob赢 for(int i=1;i<=n;++i) cin >> a[i],sum+=a[i]; if (sum & 1) cout << "Alice" << endl; else cout << "Bob" << endl; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)