Tag: AtCoder

  • Atcoder-ABC82に参加した話

    blog初投稿です、

    まだ自動で投稿する機能はできていないので手動で投稿すると思います。
    markdownも書き慣れてないところがあるので見苦しいかもしれないですが生暖かい目で見守っていただけると幸いです。

    ABCってなんぞやって人はここにくわしい説明がのっているので一読推奨です

    A問題

    2つの数の平均値を切り上げた値を返す問題でした。

    “`python:A.py
    import math
    a , b = map(float,input().split())
    print(math.ceil((a+b)/2))

    <pre><code><br />切り上げの関数がいまいち自信がなくてしらべたので少し時間がかかってしまいました。

    ## B問題
    文字列sとtが与えられてそれぞれ入れ替えていいので辞書順でs &lt; tにすることができるかという問題でした。

    “`python:B.py
    s = input()
    t = input()
    sli = list(s)
    tli = list(t)
    sli.sort()
    tli.sort()
    tli.reverse()
    def tostr(lis):
    hoge = “”
    for i in lis:
    hoge += i
    return hoge
    tstr = tostr(tli)
    sstr = tostr(sli)
    if tstr > sstr:
    print(“Yes”)
    else:
    print(“No”)

    コードが長い気がしますがac出せました

    C問題

    数列が渡されてその数列から良い数列にするために最低限取り除かないといけない要素数を答えるという問題でした。

    python:C.py
    N = int(input())
    ali = list(map(int,input().split()))
    sali = sorted(ali)
    now = None
    num = []
    suu = []
    kari = 0
    for i in range(N):
    if sali[i] == now:
    kari += 1
    else:
    if kari > 0:
    suu.append(kari)
    kari = 1
    num.append(sali[i])
    now = sali[i]
    suu.append(kari)
    kari = 0
    for i in range(len(suu)):
    if num[i] > suu[i]:
    kari += suu[i]
    elif num[i] < suu[i]:
    kari += suu[i] - num[i]
    print(kari)

    こちらも長い気がしますがacを出すことができました、最初に数列の中にある数の種類とその要素数を別々のリストを使って数えていたのが非効率な気がしますが…公式の解説を見てもよくわからないのでまあこんな感じで良かったのだと思います。

    D問題

    2次元座標上で、ロボットに渡されるコマンドとゴールの座標が渡されゴールにたどり着けるか答えるという問題でした。
    これは全く解けませんでした、公式の解説をみてもdpとかよくわからない言葉が出てきてるので自分では解けない問題なんだな、と…時間は余ってたので全探索を実装しようとも考えましたがスマホの計算機で簡単に計算したら答えの欄に∞マークが出てしまったので…

    結果

    Dは解けなかったですが全体の順位が134だったのでレートは92上がって635になりました、ついに無色より緑が近くなりました、まだ一度もDを解いたこたがないのでDが解けないと緑はきついのかな…まあhighestスコアを維持できたので自分の中では良かったんじゃないかなと。