結果
| 問題 | No.1506 Unbalanced Pocky Game |
| コンテスト | |
| ユーザー |
ID 21712
|
| 提出日時 | 2026-05-23 18:35:16 |
| 言語 | Go (1.26.1) |
| 結果 |
AC
|
| 実行時間 | 66 ms / 2,000 ms |
| コード長 | 1,122 bytes |
| 記録 | |
| コンパイル時間 | 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 |
ソースコード
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 まで動的計画法(?)で先手必勝か後手必勝かが求まる
*/
ID 21712