Codeforces-429-2-B Godsend
題意:有兩個人做游戲,其中第一個人可以拿一個非空子集,其中這個非空子集的和要是奇數(shù),拿過之后第二個再拿,第二個人取一個非空子集,要求這個非空子集的和是偶數(shù),如果一個人不能再拿了,則對方獲勝。
思路:這個問題我們可以簡化為奇數(shù)偶數(shù)和的問題,有以下三種情況:
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 1.奇數(shù)+奇數(shù)=偶數(shù)
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 2.奇數(shù)+偶數(shù)=奇數(shù)
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 3.偶數(shù)+偶數(shù)=偶數(shù)
當(dāng)全部數(shù)的和為奇數(shù)的時(shí)候很簡單,第一個人把全部的數(shù)都拿走,第一個人獲勝
當(dāng)全部的和為偶數(shù)的時(shí)候,如果式子里面有奇數(shù),則一個人取奇數(shù),剩下全部的和還是為奇數(shù),第一個人勝,其他情況為第二個人勝;
其實(shí)這個題就是思路題,可以把很多數(shù)分成奇數(shù)和偶數(shù)來考慮,這樣問題就簡化很多了
代碼如下:
#include <iostream> #include <cstdio> using namespace std; const int MAXN=1e6+10; int a[MAXN]; int main() {int n;scanf("%d",&n);long long sum=0;int even=0;int odd=0;for(int i=0; i<n; i++){scanf("%d",&a[i]);if(a[i]&1) odd=1;else even=1;sum+=(1ll)*a[i];}if(sum%2){printf("First\n");}else{if(odd) printf("First\n");else printf("Second\n");}return 0; }
????
總結(jié)
以上是生活随笔為你收集整理的Codeforces-429-2-B Godsend的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 打印Html页面自动分页
- 下一篇: ajax跨域jsonp并且post请求N