题目(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; }
Comments NOTHING