CodeForces 841B (B) 博弈
生活随笔
收集整理的這篇文章主要介紹了
CodeForces 841B (B) 博弈
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題意
定義A把取數(shù)列中區(qū)間和為奇數(shù)的元素取出來 B把數(shù)列中區(qū)間長度為偶數(shù)的區(qū)間刪除
那么誰先面臨無數(shù)可拿的局面為輸 輸出贏家
A先取
分析
分析可知本題如果區(qū)間中每一個數(shù)是偶數(shù)那么B可以一次取完 則A不能取 B贏
如果區(qū)間中有奇數(shù) 那么如果奇數(shù)有奇數(shù)個 那么A可以一次性取完 A贏
如果區(qū)間中奇數(shù)有偶數(shù)個 那么A可以取奇數(shù)個奇數(shù) 偶數(shù)-奇數(shù)=奇數(shù) 剩下序列和為奇數(shù)的情況
如果序列中有偶數(shù) B只能取其中的偶數(shù) 那么A會把唯一剩下的奇數(shù)取完 那么還是A贏
如果序列中沒偶數(shù) A直接把剩下的全取完了
如果數(shù)列中存在奇數(shù)個奇數(shù) 那么無論怎么取序列和為偶數(shù)的情況 都會留下奇數(shù)
code
#include<bits/stdc++.h> using namespace std; int a[1000010]; int main() {int n;scanf("%d",&n);int eve=0,odd=0;for(int i=1;i<=n;i++){scanf("%d",&a[i]);if(a[i]%2==0)eve++;else odd++;}if(odd==0)puts("Second");else puts("First"); return 0; }總結(jié)
以上是生活随笔為你收集整理的CodeForces 841B (B) 博弈的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C/C++中对链表操作的理解实例分析
- 下一篇: 软件缺陷的种类划分