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