A - Very Very Primitive Game

A - Very Very Primitive Game

縦に長いんじゃ。冗長に書きすぎてしまった。。。

コード

    a,b,c = list(map(int, input().split(' ')))
    if a==b:
        if c==0:
            ans = 'Aoki'
        else:
            ans = 'Takahashi'
    elif a>b:
        ans = 'Takahashi'
    else:
        ans = 'Aoki'
    print(ans)

B - Magic 3

B - Magic 3

必要十分に解けたと思う。

コード

    n,s,d = list(map(int, input().split(' ')))
    ans = 'No'
    for i in range(n):
        x,y = map(int, input().split(' '))
        if x<s and y>d:
            ans = 'Yes'
    print(ans)

C - Bowls and Dishes

C - Bowls and Dishes

初めて自力でアルゴリズムらしいアルゴリズムを使えたと思う。 条件と選択肢のリストは、 解説 みたいにちゃんと1行で書けるようになりたい。 itertools はなあ……使えるようになれば簡潔に書けるんだろうけど、今の自分のレベルだと、まだ愚直に書いていった方がいいかなと思った。

コード

def main():
    n,m = list(map(int, input().split(' ')))
    ans = 0

    # 条件をタプルのリストで持つ
    cnds = []
    for i in range(m):
        cnds.append(tuple(map(int, input().split(' '))))

    # ボールを入れる選択肢をタプルのリストで持つ
    choice = []
    k = int(input())
    for i in range(k):
        choice.append(tuple(map(int, input().split(' '))))

    # ビットでボールの置き方の組合せを全探索
    for i in range(2**k):
        # ビット配列の作成
        bi = format(i,'b')
        bi = bi.zfill(k)
        bi = list(map(int,list(bi)))

        # 置いてある皿の番号のセット
        s = set()
        for j in range(k):
            s.add(choice[j][bi[j]])

        # 条件が揃っていればインクリメント
        cnt = 0
        for j in range(m):
            if cnds[j][0] in s and cnds[j][1] in s:
                cnt += 1

        if ans < cnt:
            ans = cnt

    print(ans)

if __name__ == '__main__':
    main()

感想


計1時間でABC3問解け、D問題に (手も足も出なかったものの) 取り組めたので、着実にレベルアップはできていると思う。というか言い聞かせる。 茶色まであと半分のところまでこれた。