バイトの競プロメモ

主に競技プログラミング

greedyからの帰着

AtCoder Beginner Contest 299 G - Minimum Permutation

G - Minimum Permutation メモ Li(v) := vが現れるインデックスの内最も左 Ri(v) := vが現れるインデックスの内最も右 とする 辞書順最小なので、次の数にできる物の内最小のものを貪欲に決めていきたい。 値vを先頭にできるかの判定を考える。 l = Li(v)と…

AtCoder Beginner Contest 301 F - Anti-DDoS

F - Anti-DDoS メモ 以下ではDDoS文字を数える まず判定問題を考えて問題を簡潔にしたい。 これは排反に数え上げる上でも役立つ。 ある文字列にDDoS文字が含まれていても、その文字列を複数回数えないようにしたい。 こういうものはよく、最初に現れる何かの…

AtCoder Beginner Contest 304F - Shift Table

F - Shift Table メモ Nの約数M(N < M)について 青木君のシフトを周期Mで決めた時に、すべての日程でどちらかが居ないといけない。 そのような青木君のシフトを数え上げろという問題 複数の操作列(M, 長さMのシフト)について、同じシフトが重複してしまう事…

AtCoder Regular Contest 160 D - Mahjong

D - Mahjong メモ 以下の二つの操作を使って作れる、長さNで総和がMの数列Aは何通りあるか ・長さKの区間に1を足す ・あるAiの値をK足す この問題の難しさは、異なる操作によって同じ数列が作られる事があるという点にある これは、数えあげpdfのgreedyから…