ZOJ 問題 D 小花梨的取石子遊戲

2021-09-23 07:56:00 字數 1127 閱讀 5622

題目描述

小花梨有n堆石子,第i堆石子數量為ai,n堆石子順時針編號為1−n(如圖)。

遊戲將進行n輪,每輪遊戲單獨進行,互不干擾,每輪初始時第i堆石子數目為ai。

第i輪從編號為i的那堆石子為起點,順時針來取石子。兩人輪流取石子,不可不取,最少取乙個石子,最多把當前這一堆取完,只有取完一堆後才走到下一堆石子。走完一圈後石子都被取完,不能取石子的人就失敗。假設兩人以最優策略進行取石子操作,請分別輸出n輪遊戲是先手勝還是後手勝。

輸入第一行為正整數n,表示石子的堆數(1≤n≤100000)

第二行輸入n個正整數表示每一堆的石子數目ai(1≤ai≤109)

輸出輸出n行,第i行表示第i輪遊戲的結果。如果先手勝則輸出"first",後手勝輸出"second"。

複製樣例資料

3 

2 1 3

樣例輸出

first

second

first

提示

遊戲進行3輪

第1輪遊戲石子堆下標的順序為1 2 3,此時石子數目按順序為2 1 3,先手勝

第2輪遊戲石子堆下標的順序為2 3 1,此時石子數目按順序為1 3 2,後手勝

第3輪遊戲石子堆下標的順序為3 1 2,此時石子數目按順序為3 2 1,先手勝

#include#include#include#include#include#include#include#include#include#include#includeint a[100005],sum[100005];

using namespace std;

int main()

for(int i=n*2-1; i>=0; i--)

//用乙個sum陣列來存連續為1 的個數

for(i=0;i1)//第一堆的石子個數大於一,先手勝

else if(flag==0)//序列全為一

else//從第一堆連續1的個數

}return 0;

}

問題 D 小花梨的取石子遊戲

本人是一名小弱雞,如果有錯誤,請各位大佬指出。第一次寫,希望大家能夠提出不足之處。小花梨有n堆石子,第i堆石子數量為ai,n堆石子順時針編號為1 n 如圖 遊戲將進行n輪,每輪遊戲單獨進行,互不干擾,每輪初始時第i堆石子數目為ai。第i輪從編號為i的那堆石子為起點,順時針來取石子。兩人輪流取石子,不...

博弈 小花梨的取石子遊戲

時間限制 1000ms 空間限制 512mb description 小花梨有 堆石子,第 堆石子數量為?堆石子順時針編號為 1 如圖 遊戲將進行?輪,每輪遊戲單獨進行,互不干擾,每輪初始時第?堆石子數目為?第?輪從編號為 的那堆石子為起點,順時針來取石子。兩人輪流取石子,不可不取,最少取 乙個石子...

小花梨的取石子遊戲 博弈

小花梨有?堆石子,第?堆石子數量為?堆石子順時針編號為1 如圖 遊戲將進行?輪,每輪遊戲單獨進行,互不干擾,每輪初始時第?堆石子數目為?第?輪從編號為?的那堆石子為起點,順時針來取石子。兩人輪流取石子,不可不取,最少取 乙個石子,最多把當前這一堆取完,只有取完一堆後才走到下一堆石子。走完一圈後石子都...