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

2021-09-23 11:30:58 字數 831 閱讀 5113

本人是一名小弱雞,如果有錯誤,請各位大佬指出。第一次寫,希望大家能夠提出不足之處。

小花梨有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"。

32 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 using namespace std;

const int n=100000;

int a[n+5];

int b[2*n+5];

int main()

for(int i=0;ielse}}

return 0;

}*

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

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

博弈 小花梨的取石子遊戲

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

小花梨的取石子遊戲 博弈

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