C - Yamanote Line Game Editorial by cirno3153


この問題は、 \(O(N)\) で解くことができます。

一般に、ゲーム問題においては対称戦略が必勝法になることがあります。

今回の場合、まず予め数字を二つずつのペアにしておきます。そして、ペアの片方の数字が宣言されたら、もう片方の数字を宣言することにします。

この方法は、 数字の個数が偶数ならば後攻が必勝となります。 今回は \(2N+1\) が奇数なので、最初にペアを作った時に余る値を宣言することで先攻が必勝になります。

具体的な実装の一例として、まず初めに \(N+1\) を宣言し、後は青木君が宣言した値を \(x\) として \(2N+2-x\) を宣言するという方法などが存在します。

N = int(input())
print(N + 1)
for _ in range(N):
	aoki = int(input())
	print(2 * N + 2 - aoki)

posted:
last update: