[博弈]Codeforces-841B

http://codeforces.com/problemset/problem/841/B

?题目链接

题目大意:有一个长度为n的数组 第一个人从中去掉和为奇数的一部分数字 第二个人去掉和为偶数的一部分数字 轮流进行 谁先无法去除数字谁就输了。

解题思路:第三天写博弈了 这个比较简单
如果总和为奇数 那么先手必胜 全部去掉。
如果总和为偶数 那么要判断其中有没有奇数 如果有奇数 则一定是偶数个奇数 先手只需每次去掉奇数个奇数+任意数量的偶数 则可以保证后手的人无法去除所以奇数 如此往复 先手必胜
如果总和为偶数 并且其中没有奇数 那么先手无法操作 后手必胜

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const int eps = 1e-7;
const int maxbit = 30;
const int maxn = 1000000;
const double PI = 3.14;

using namespace std;

int main()
{
ios::sync_with_stdio(0);
int n,m;
int sum = 0;
int flag = 0;
cin >> n;
while (n–) {
cin >> m;
sum += m;
if (m % 2==1)flag=1;
}
if (sum % 2 == 0&&flag==0) cout << “Second\n”;
else cout << “First\n”;
return 0;
}


[博弈]Codeforces-841B
https://47.97.0.163/2019/04/24/博弈codeforces-841b/
作者
John Doe
发布于
2019年4月24日
许可协议