pythonで青くなるブログ

主に競プロのについての記事(日記的な)を書きます。現在atcoder水色,こどふぉ青色。python3使って、やってます。atcoder青くなりたい

CodeJam Qualification Round2020 A~C

概要

  • Code Jam 2020のQualification RoundのA~C問題をpythonでときましたメモ。
  • (A~Cしか解けなかったため)

 問題はこちら

codingcompetitions.withgoogle.com

A: Vestigium

def solve():
    N = int(input())
    grid = [[v for v in map(int, input().split())] for _ in range(N)]
    trace = sum([grid[i][i] for i in range(N)])
    row = 0
    col = 0
    for i in range(N):
        if len(set([grid[i][j] for j in range(N)])) != N:
            row += 1
        if len(set([grid[j][i] for j in range(N)])) != N:
            col += 1
    return [trace, row, col]


for i in range(int(input())):
    ret = solve()
    print("Case #{}: {} {} {}".format(i+1, *ret))

B: Nesting Depth

def solve():
    S = input()
    ret = ""
    cur_dep = 0
    for s in S:
        if int(s) == cur_dep:
            ret += s
        elif int(s) > cur_dep:
            ret += "("*(int(s)-cur_dep)+s
            cur_dep = int(s)
        else:
            ret += ")"*(cur_dep-int(s))+s
            cur_dep = int(s)
    ret += ")"*cur_dep
    return ret


T = int(input())
for i in range(T):
    ret = solve()
    print("Case #{}: {}".format(i+1, ret))

C: Parenting Partnering Returns

def solve():
    N = int(input())
    activities = [list(map(int, input().split())) for _ in range(N)]
    activities = [[i, a[0], a[1]] for i, a in enumerate(activities)]
    activities = sorted(activities, key=lambda x: (x[1], x[2]))
    ret = []
    C_end = 0
    J_end = 0
    for i, s, e in activities:
        if C_end <= s:
            ret.append([i, "C"])
            C_end = e
        elif J_end <= s:
            ret.append([i, "J"])
            J_end = e
        else:
            ret = "IMPOSSIBLE"
            return ret
    ret = sorted(ret)
    return "".join(map(str, [v[1] for v in ret]))


T = int(input())

for i in range(T):
    ret = solve()
    print("Case #{}: {}".format(i+1, ret))

思ったこと

  • とりあえず42点取れた。
  • Qualification Roundは30点取ると次のRound1に進めるっぽいので、とりあえず突破っぽい。
  • Round1は3回開かれて、少なくとも1回上位1500人に入れると、Round2にいけるっぽい。
  • Round2に行けたら嬉しいな。

最近買ってよかったもの

  • wpcの折り畳み傘

  • 軽いしとてもコンパクト。
  • リュックとかに入れても、70gしか重さがないためリュックがおもくならない
  • 50cmの傘だけど、折りたたむととてもコンパクトになるため、リュックに入れてもかさばらない。サコッシュとかにも入るので、便利。
  • 50cmあるので、一人は雨から守れる。(二人はいるにはさすがに狭いけど。)
  • 何より ミニマルなデザイン が好き。