AGC034(2完)
ハロートナミです。
AGC034やりました
ネタバレがあります。
A
考え
問題の意味を理解するのに時間がかかった。
移動しなきゃいけない区間に'##'が存在する場合そもそも飛び越えられないので無理
D>Cである場合AとBは入れ替えが必要なので'...'が無いと無理
書いたソース
N, A, B, C, D = map(int, input().split()) S = input() change = S[max(A,B)-2:min(C,D)+1] S = S[min(A,B)-1:max(C,D)] if S.count('##') > 0: print('No') else: if change.count('...') > 0: print('Yes') elif C < D: print('Yes') else: print('No')
changeというのは「このエリアに...が無いと無理」という区間です。
競プロ中の変数名もうちょっと分かりやすさと短さを両立していきたい
B
これ本当に恥ずかしいので載せたくないけど自戒のために載せます
考え
ンン……?クレバーな方法が全然思いつかない
とりあえず置換すると何が起こるか考えてみる、手元のノートに何パターンか書く
あれこれたいしてパターン数無い?全パターンif文にすりゃ解けるんじゃないの?
書いたソース
s = input() Amemo = 0 result = 0 A = False B = False C = False for c in s: if c == 'A': if B: Amemo = 0 A = True B = False C = False Amemo += 1 elif c == 'B': if A or C: A = False B = True C = False else: Amemo = 0 A = False B = False C = False elif c == 'C': if B: result += Amemo A = False B = False C = True else: Amemo = 0 A = False B = False C = False print(result)
Aがきたら何個連続したかを覚えます。
Bが来たら"直前がAだった", "直前にABCが完成した", "それ以外"で場合分けします。
Cが来たら"直前がABだったorABCB...だった", "それ以外"で場合分けします。
これやると答えが出るんですよ。本当です
会社の先輩にはブルートフォースだねって言われました。そうですね
考えてる途中でBCが移動していくように見えるな~とは思ってたのに解説の内容が思いつけなかったのひどいですね
C
考え
えーなんかlとuの2パターンだけ考えれば良いことは分かるが……破滅
書いたソース
# ない
DとEとF
考え
時間なし