codefroces 841B Godsend

来源:互联网 发布:酷宝数据 编辑:程序博客网 时间:2024/05/29 19:13

想法题

如果数的和为奇数 那么first直接全部拿走

如果数的和为偶数,分两种情况:

1.如果每个数都是偶数 那么first无法拿走任何数 second赢

2.如果存在奇数(肯定是偶数个):

   ①如果某个奇数在第一个位置或者在最后一个位置

   例如3...5...7...1...(省略号部分为偶数,可以一个可以多个也可以没有)

   那么first拿上面这个序列的时候 就可以除了3全部拿走 所以first赢

  ②如果奇数都不在第一个或者最后一个位置

    ...3...5...7...9...  first可以拿得只剩下9...或者...3 无论second怎么拿sum为偶数的序列 再轮到first时first总可以把所有数都拿走

    所以如果存在奇数的情况first恒赢


#include<algorithm>#include<iostream>#include<cstdlib>#include<cstring>#include<cstdio>#include<string>#include<stack>#include<queue>#include<cmath>#include<stack>#include<list>#include<map>#include<set>typedef long long ll;using namespace std;int a[1000005];int main(){    int i,n;    scanf("%d",&n);    int odd=0,even=0;ll sum=0;    for(i=1;i<=n;i++)    {        scanf("%d",&a[i]);        sum+=a[i];        if(a[i]&1)        {            odd++;        }        else even++;    }    if(sum&1)    {        printf("First");        return 0;    }    if(odd==0)    {        printf("Second");        return 0;    }    printf("First");    return 0;}