結果

問題 No.1506 Unbalanced Pocky Game
コンテスト
ユーザー ID 21712
提出日時 2026-05-23 18:35:16
言語 Go
(1.26.1)
コンパイル:
env GOCACHE=/tmp go build _filename_
実行:
./Main
結果
AC  
実行時間 66 ms / 2,000 ms
コード長 1,122 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 12,907 ms
コンパイル使用メモリ 282,260 KB
実行使用メモリ 6,400 KB
最終ジャッジ日時 2026-05-23 18:35:34
合計ジャッジ時間 17,691 ms
ジャッジサーバーID
(参考情報)
judge2_1 / judge1_1
純コード判定待ち
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 63
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

package main

import . "fmt"
import . "os"
import bf "bufio"

func main() {
	rd:=bf.NewReader(Stdin)
	var n int
	Fscan(rd,&n)
	winnerIsFirstPlayer := false
	for i := 0; i < n; i++ {
		var a int
		Fscan(rd,&a)
		if winnerIsFirstPlayer {
			winnerIsFirstPlayer = a >= 2
		} else {
			winnerIsFirstPlayer = true
		}
	}
	if winnerIsFirstPlayer {
		Println("Alice")
	} else {
		Println("Bob")
	}
}

/*
考察

N=1 のときは先手がA[1]を全部取ってしまえば後手は手なしで先手必勝である

N>1 のとき

A[1] ... A[i-1] までのゲームとしたとき先手必勝になる場合
 ・A[i] = 1 のとき
  A[i]の先手はA[i-1]のとき後手になるしかく必敗する
 ・A[i] >= 2 のとき
  A[i]の先手は 1 だけ残して (A[i]-1) を取ることでA[i-1]のときも先手になれて必勝になる

A[1] ... A[i-1] までのゲームとしたとき後手必勝になる場合
 ・A[i]の先手は A[i] 全部を取り切ればA[i-1]の後手になれて必勝になる

つまり i=1 から i=N まで動的計画法(?)で先手必勝か後手必勝かが求まる


*/
0