0
0

前回の振り返り

今日はABC開催日だったので参加した結果を適当に振り返る

今回も安心と信頼のABCの3完

  • しかしAB問題を雑にコーディングしすぎて2回WAしてしまった

以下でそれぞれ問題についてまとめる

E,F,Gは取り組んですらないが
Dを解き始める前に読んだ感想とかその後の解説の反応をまとめている。

A

Sの文字の場所を確認してRの位置 < Mの位置だったらOK
Mを指定する箇所を間違えてSにしてしまいWA食らったorz

ソースコード

main.py
import sys
def rI(): return int(sys.stdin.readline().rstrip())
def rLI(): return list(map(int,sys.stdin.readline().rstrip().split()))
def rS(): return sys.stdin.readline().rstrip()
def rLS(): return list(sys.stdin.readline().rstrip().split())
def err(*args): print(*args, file=sys.stderr)

def main():
    S = rS()
    
    d = {s:i for i,s in enumerate(S)}    
    
    ans = d["R"] < d["M"]
    print("Yes" if ans else "No")
    
if __name__ == '__main__':
    main()

B

最初分割をどうするか思いつかなくて適当にやったらWA食らった
そして一旦落ち着いてスライス使うことにしたら解けた。

ソースコード

main.py
import sys
def rI(): return int(sys.stdin.readline().rstrip())
def rLI(): return list(map(int,sys.stdin.readline().rstrip().split()))
def rS(): return sys.stdin.readline().rstrip()
def rLS(): return list(sys.stdin.readline().rstrip().split())
def err(*args): print(*args, file=sys.stderr)

def main():
    S, T = rLS()
    
    N = len(S)

    for w in range(1,N):
        s_lst = [S[i::w] for i in range(w)]
        for s in s_lst:
            if s == T:
                print("Yes")
                break
        else:
            continue
        break
    else:
        print("No")

if __name__ == '__main__':
    main()

C

同じ箱に入っているもののうち、一番重いもの以外のやつを総和する。
heapq,defaultdict,Counterといろんなデータ構造をぶつけてACした

ソースコード

main.py
import sys
import heapq
from collections import defaultdict,Counter
def rI(): return int(sys.stdin.readline().rstrip())
def rLI(): return list(map(int,sys.stdin.readline().rstrip().split()))
def rS(): return sys.stdin.readline().rstrip()
def rLS(): return list(sys.stdin.readline().rstrip().split())
def err(*args): print(*args, file=sys.stderr)

class Minheapq(object):
    def __init__(self):
        self.q = []
    def push(self, v):
        heapq.heappush(self.q, v)

    def pop(self):
        return heapq.heappop(self.q)

def main():
    N = rI()
    A = rLI()
    W = rLI()
    
    d = defaultdict(lambda: Minheapq())
    
    c = Counter(A)
    
    for a,w in zip(A,W):
        d[a].push(w)
    
    ans = 0
    for k,v in c.items():
        if v < 2:
            continue
        for _ in range(v-1):
            w = d[k].pop()
            ans += w
    print(ans)
    
if __name__ == '__main__':
    main()

D

0,1をグループ分けして尺取り法までは分かったが、
しかし前提のすれ違う条件がわからなくて時間切れ

後日解説ACした記事を書く予定

E

期待値のやつなんてやったことないのでそっ閉じ

F

順位表で解いてる人少なそうだったので見なかったことにした

G

最初、1つだけ変更して組み合わせるからもしかしてセグ木でいけるか?
とか思ったけど、よく読んだら最大値さがすならDPじゃんってなって
じゃあどうやって組み合わせるの?と謎が解けず、放置

終わった後に解説みたらDPだけでいいのねこれ

もしD問題を解けていたら取り組んでたけど多分解けなかったと思う。

まとめ

A,B問題で焦ってしまいそれぞれでWAを喰らってしまった
それぞれは早解きしたい問題ではあるが、落ち着いて取り組まないといけないね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0