B1. Palindrome Game (easy version) #721 Div.2
4582 ワード
https://codeforces.com/contest/1527/problem/B1
1秒、256 MBメモリ
input : t (1≤t≤103) n (1≤n≤103) string output : For each test case print a single word in a new line:
"ALICE", if Alice will win the game,
"BOB", if Bob will win the game,
"DRAW", if the game ends in a draw.
各テストケースで、次のいずれかの単語を出力します.
Alicが勝ったら「ALICE」、Bobが勝ったら「BOB」、引き分けたら「DRAW」を出力します.
条件:
Both players take alternate turns with Alice going first.
プレイヤーたちは交代で遊ぶ.先制攻撃はアリスが取った
Choose any
Reverse the whole string, pay 0 dollars. This operation is only allowed if the string is currently not a palindrome, and the last operation was not reverse.
文字列を反転します.この条件は、文字列が返信文でない場合にのみ使用できます.そして相手の行動は
問題で入力した文字列は基本的にパリンドロンです.
初めて近づいた時、パリンドロンじゃなかったら、ひっくり返せばいいんじゃないですか?と思います.しかし、ベストマッチを行うためには、初めてアリスが1を置いて、ボブも1を置いてください.どこですか.アリスが置いた位置の正しい反対側に
そして最後のコマが残った時、そのラウンドで行動した人はひっくり返されます.このようにするのが最善の方法だ.
例外はファリン症候群で,中間に位置する値は0であった.この場合、文字列の長さは奇数であるべきです.
自分で確認しようとする前に、まずどの行動が最適な数なのかを考えなければなりません.
だからとにかくアリスが先に攻撃する入力した文字列は、次の2つのケースに分けられます.
1.ゼロの個数が奇数
2.0偶数
次のように分けることができます.
文字列の長さが奇数で、真ん中の文字がゼロという意味です.
例:
10001の場合
Alice:1011(依然としてファリン症候群を引き起こす)
Bob : 11101
Alice:10111(逆に自分が勝つ)
Bob : 11111
->Alice勝
だから奇数ならアリスは勝つしかない.
例外的に、中間の要素が0の場合、Aliceは失敗します.
1番の条件が動き出すと、ゲームは続かないからだ.
0000
Alice : 1000
Bob : 1001
Alice : 1101
Bob:101(逆に自分が勝つ)
Alice : 1111
こうして修行して、ボブは勝利した.
1秒、256 MBメモリ
input :
s
of length n
"ALICE", if Alice will win the game,
"BOB", if Bob will win the game,
"DRAW", if the game ends in a draw.
Alicが勝ったら「ALICE」、Bobが勝ったら「BOB」、引き分けたら「DRAW」を出力します.
条件:
Both players take alternate turns with Alice going first.
プレイヤーたちは交代で遊ぶ.先制攻撃はアリスが取った
Choose any
i
(1≤i≤n), where s[i]= '0' and change s[i] to '1'. Pay 1 dollar.i
ポイントの代わりに1ドルを支払う.Reverse the whole string, pay 0 dollars. This operation is only allowed if the string is currently not a palindrome, and the last operation was not reverse.
文字列を反転します.この条件は、文字列が返信文でない場合にのみ使用できます.そして相手の行動は
reverse
ではない.初めて近づいた時、パリンドロンじゃなかったら、ひっくり返せばいいんじゃないですか?と思います.しかし、ベストマッチを行うためには、初めてアリスが1を置いて、ボブも1を置いてください.どこですか.アリスが置いた位置の正しい反対側に
そして最後のコマが残った時、そのラウンドで行動した人はひっくり返されます.このようにするのが最善の方法だ.
例外はファリン症候群で,中間に位置する値は0であった.この場合、文字列の長さは奇数であるべきです.
自分で確認しようとする前に、まずどの行動が最適な数なのかを考えなければなりません.
だからとにかくアリスが先に攻撃する入力した文字列は、次の2つのケースに分けられます.
1.ゼロの個数が奇数
2.0偶数
次のように分けることができます.
奇数
文字列の長さが奇数で、真ん中の文字がゼロという意味です.
例:
10001の場合
Alice:1011(依然としてファリン症候群を引き起こす)
Bob : 11101
Alice:10111(逆に自分が勝つ)
Bob : 11111
->Alice勝
だから奇数ならアリスは勝つしかない.
例外的に、中間の要素が0の場合、Aliceは失敗します.
1番の条件が動き出すと、ゲームは続かないからだ.
偶数
0000
Alice : 1000
Bob : 1001
Alice : 1101
Bob:101(逆に自分が勝つ)
Alice : 1111
こうして修行して、ボブは勝利した.
import sys
t = int(sys.stdin.readline())
for i in range(t):
n = int(sys.stdin.readline())
data = sys.stdin.readline().rstrip()
cnt = 0
for item in data:
if item == '0':
cnt += 1
if cnt == 1 or cnt % 2 == 0:
print("BOB")
else:
print("ALICE")
Reference
この問題について(B1. Palindrome Game (easy version) #721 Div.2), 我々は、より多くの情報をここで見つけました https://velog.io/@jsin2475/B1.-Palindrome-Game-easy-version-721-Div.2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol