[Codeforces Round #429 (Div.2)] 841B – Godsend

发布于 2017-08-19  139 次阅读



题目(Codeforces)
这题是稍微需要动一下脑筋的,不过还是比较简单就是了。
其实......只要这个数组有奇数,那么就是First,不然就是Second。
Why?
感性理解一下吧:
如果总和为奇数,那么就直接取完了啊233
如果总和为偶数,那么第一个人要想赢,他就必须尽量取,因为无论怎么取,剩下的必定是奇数。然后第二个人取:他要取偶数,之后奇数-偶数=奇数,
第一个人又直接取完了233
再或者,第一个人取一遍后,剩下的数使第二个人不能再取了(也就是只剩下一个奇数),那么第二个人没法取了。
结果还是第一个人赢233
综上所述:
只要数组里面有奇数,那么第一个人赢;
如果数组里每个数都是偶数,那么第一个人一开始就没法取,第二个人赢。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <queue>
using namespace std;
typedef long long ll;
int n;
ll a[1000005];
ll sum;
int main()
{
	scanf(
	for (int i=1;i<=n;++i)
	{
		scanf(
		if (a[i
		{
			puts("First");
			return 0;
		}
	}
	puts("Second");
	return 0;
}