けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

ACLpractice

AtCoder Library Practice Contest L - Lazy Segment Tree

タイトル "Lazy Segment Tree" の名の通り、遅延評価セグメント木の練習問題! 問題へのリンク 問題概要 長さ の 0 と 1 のみからなる数列 が与えられる。この数列に対して、次の 回のクエリに答えよ。 クエリタイプ 1 ():数列の区間 内の各要素の値につい…

AtCoder Library Practice Contest K - Range Affine Range Sum

遅延評価セグメント木の練習! 問題へのリンク 問題概要 長さ の数列 が与えられる。この数列に対して、次の 回のクエリに答えよ。 クエリタイプ 1 ():数列の区間 内の各要素の値を 倍して を足せ クエリタイプ 2 ():数列の区間 内の要素の総和を 99824435…

AtCoder Library Practice Contest J - Segment Tree

セグメント木の練習問題です。 クエリタイプ 1, 2 のみなら、ただの RMQ ですね。クエリタイプ 3 は、セグメント木上の二分探索を実行する関数 max_right() が使えます。 問題へのリンク 問題概要 長さ の数列 がある。この数列に対して、以下の 2 種類のク…

AtCoder Library Practice Contest E - MinCostFlow

D 問題の MaxFlow に続いて、これまた、人生で一度は解くべき超典型問題ですね。そして、D 問題とは違うやり方で、二部グラフを作ることにも注目です! 問題へのリンク 問題概要 のグリッドがあり、各マスには数値が書かれています。 これらのマスからいくつ…

AtCoder Library Practice Contest D - Maxflow

グリッドを市松模様に塗って、「黒色マス」と「白色マス」で二部マッチングするという、超典型問題! 問題へのリンク 問題概要 のグリッドが与えられます。 各マスは「障害物」が置かれているか、「空」であるかのいずれかです。入力データにおいては、障害…

AtCoder Library Practice Contest F - Convolution

本当に ACL の convolution をそのまま試してほしいという問題ですね。 問題へのリンク 問題概要 整数列 と、整数列 が与えられる。 によって定義される整数列 を求めよ。 制約 解法 とにかく、ACL のドキュメントにそのままの式が書いてある! https://atco…

AtCoder Library Practice Contest H - Two SAT

2-SAT は強連結成分分解の典型的な応用例! 問題へのリンク 問題概要 旗 を数直線上に設置したい。旗 は、座標 または座標 に設置可能である。 ただし、どの 2 つの旗も、その距離が 以上となるようにする必要がある。 本の旗を設置することが可能かどうかを…

AtCoder Library Practice Contest G - SCC

まさに文字通り、強連結成分分解をしてください、という問題ですね。そしてこの問題は、Yosupo Judge の Strongly Connected Components が元になっているようです。 問題へのリンク 問題概要 頂点 辺の有向グラフが与えられる。 番目の辺は である。このグ…

AtCoder Library Practice Contest I - Number of Substrings

Suffix Array と LCP の理解を問う問題。超シンプルで面白い問題! 問題へのリンク 問題概要 長さが の文字列 が与えられる。 の連続する部分文字列の種類数を答えよ。 制約 解法 文字列 の Suffix とは「後ろの何文字かをとってできる文字列」のことである…

AtCoder Library Practice Contest C - Floor Sum

Floor Sum が AtCoder 標準ライブラリに入ったのはびっくりした。結構マニアックな印象だった。 問題へのリンク 問題概要 この問題は ケース与えられる。整数 が与えられるので、 を求めよ。 制約 考えたこと 等差数列を で割った商の総和を求めたくなること…

AtCoder Library Practice Contest B - Fenwick Tree

BIT の使い方の練習問題。同時に、自分で BIT を書いたときにそれを verify できる問題でもある! 問題へのリンク 問題概要 長さ の数列 が与えられる。この数列に対する 個のクエリに答えよ。 :数列中の値 に を加算する (a[p] += x) :数列 の区間 の総和…

AtCoder Library Practice Contest A - Disjoint Set Union

Union-Find の最も典型的な練習問題 問題へのリンク 問題概要 頂点 辺の無向グラフに 個のクエリが飛んでくる :辺 を追加する : 頂点間 が連結ならば 1、そうでないなら 0 を出力する 制約 解法 Union-Find はグループ分けを管理するデータ構造です。以下…