名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。

ARC088振り返り

1完でした。D問題を考えている間に寝てしまうアクシデントがあり、その後出るはずのCFも出ず、そのまま寝ていました。起きたら1時半だったので絶望。

E問題以降は問題文も読んでいません。

C - Multiple Gift

https://beta.atcoder.jp/contests/arc088/tasks/arc088_a

落とし穴を考えていたのですが、どうやら愚直実装でちゃんと判定が出来ていればOKだった模様。 この問題に時間かけすぎたのは反省。これもしかして桁あふれするような罠があるんかな。(Python等の多数倍整数がデフォルトの言語だと意識する必要が無いですが…)

Pythonのコード:https://beta.atcoder.jp/contests/arc088/submissions/1896424

#!/usr/bin/env python
# -*- coding: utf-8 -*-

def solve():
    x, y = map(int, input().split())
    ans = 0
    while x <= y:
        ans += 1
        x *= 2
    print(ans)

if __name__=="__main__":
    solve()

D - Wide Flip

https://beta.atcoder.jp/contests/arc088/tasks/arc088_b

コンテストが終わったあとに解きました。(さっき解いた)

本番中は考察が上手く行かなかったため、解けなかったのですが数字が切り替わる地点を見て、それ以前を変えるか、それ以降を変えるか、の2択で最小値を取っていきます。(ほぼ解答の写経)

実は本番中ずっと誤読していて、(答えが2だとしたら、絶対長さ2のものでしか置き換えることが出来ないと思いこんでいた、実際は2以上で置き換えが可能になる)、ほとんどこれ回答1とか2にならないこれ?? とかずっと思い込んでいたので、アホでした。

あとこの問題、結構質問による訂正が行われていたので最初混乱したのも辛かった…(最小値を求めるのか最大値を求めるのか。となり、「??????」になっていた)

Pythonのコード: https://beta.atcoder.jp/contests/arc088/submissions/1904144

#!/usr/bin/env python
# -*- coding: utf-8 -*-

def solve():
    s = input()
    n = len(s)

    ans = len(s)
    current_number = s[0]
    for k, c in enumerate(s):
        if c != current_number:
            ans = min(ans, max(k, n - k))
            current_number = c
    print(ans)

if __name__=="__main__":
    solve()

反省

問題文と制約は混乱したら口に出して読め、という基本への立ち返りが必要。 あと疲れた状態で出るのは結構厳しくなってきたなあという気持ちがあるので、体力をつけないとなあ。