ARMERIA

Rubyと競技プログラミングの話 AtCoderやCodeforcesの問題解説記事が多め。

2020-04-01から1ヶ月間の記事一覧

Codeforces Round #501 (Div. 3) F. Bracket Substring

お題箱より。 Problem - F - Codeforces 問題概要 整数 と、開き括弧・閉じ括弧からなる文字列 が与えられる。長さ の正しい括弧列であって、その連続部分文字列として をどこかに含むものの個数を で求めよ。 制約 解法 DPを立てる 正しい括弧列の問題は、(…

AtCoder Beginner Contest 162 F - Select Half

お題箱より。 F - Select Half 前置き リクエストでは「そもそもなぜDPを思いつくのか」を知りたいという声をもらったのですが…この点は非常に難しいと思っています。というのも、私の場合はDPで最終的に解けない問題であっても考察途中で「DPできないか?」…

Codeforces Round #636 (Div. 3) F. Restore the Permutation by Sorted Segments

Problem - F - Codeforces 問題概要 長さ の順列 がある(与えられない)。この順列に対して、 それぞれに対して以下のように計算される 個の数列が与えられる。 各 に対して、 なる を選び、 をソートした数列。 ここで 個の数列は並べ替えられた順番で与え…

AtCoder Beginner Contest 163 F - path pass i(マージテク解法)

F - path pass i 公式解説とは違う方法で、計算量は であまり良くないのですが、私が解いた解法をまとめておきます。 解説 「通らないもの」を数える 頂点数が であるとき、単純パスの総数は 個です。色 について解く時には、この総数から「色 の頂点を通ら…

Codeforces Round #630 (Div. 2) G. No Monotone Triples

お題箱より。けっこう難しかった… Problem - G - Codeforces 問題概要 数列 が与えられる。この数列の長さ 以上の部分列が「free from monotone triples」であるということを、「その部分列からさらに長さ の部分列をどのように取っても、広義単調増加にも広…

yukicoder No.1029 JJOOII 3

お題箱より。 No.1029 JJOOII 3 - yukicoder 解法 計算量などの表記のため、 と置きます。この問題の制約では です。 作りたいレベル のJOI文字列を と表記します。文字列のインデックスは0-indexedで表記します。 を前から順に作っていく、以下のようなDPを…

Codeforces Round #629 (Div. 3) F. Make k Equal

お題箱より。 Problem - F - Codeforces リクエストに沿って、正当性の説明をします。ちゃんと証明を組むとなかなか大変でした… 問題概要 要素の整数列 と整数 が与えられる。 1回の操作で、この数列に以下のいずれか1つを行うことができる。 操作 : の最小…

Codeforces Round #635 (Div. 1) E1. Chiori and Doll Picking (easy version)

Problem - E1 - Codeforces E1しか解けていないので、E1しか通らない解法を書きます…。この他にも色々な解法があるっぽい? 問題概要 個の非負整数 が与えられる。また非負整数 が与えられ、 である。 から任意個の要素を選ぶ選び方は全部で 通りある。選ん…

Codeforces Round #632 (Div. 2) F. Kate and imperfection

Problem - F - Codeforces 問題概要 正整数 が与えられ、集合 と定める。要素数2以上である の部分集合 について、 の値を「 に含まれる相異なる2要素 に対する の最大値」と定める。 に対して、要素数が である の部分集合 についての の最小値を求めよ。 …

AtCoder Beginner Contest 161 F - Division or Substraction

F - Division or Substraction 解法 「 が で割り切れる時」「割り切れない時」で操作の種類が変わるので、 を で割った余りに注目してみましょう。 もし を で割った余りが でない場合には、 は 未満になるまで に置き換えられ続けます。つまり、この余りは…

Codeforces Round #631 (Div. 1) D. Dreamoon Likes Strings

Problem - D - Codeforces 問題概要 英小文字からなる文字列 が与えられる。この に以下の操作を繰り返して空文字列にしたい。 の連続する部分文字列であって、どの隣り合う文字も等しくないものを1箇所選ぶ。それを除去し、残った部分を結合する。 その最小…