2023-01-01から1年間の記事一覧
単純な DFS / BFS 系はいよいよ灰色 diff になったのですね。 問題へのリンク 類題など この問題と同様に「連結成分を求める」を練習できる問題たちです! drken1215.hatenablog.com 問題概要 二次元平面上に 人がいます。 番目の人は座標 にいます。 今、 …
くしらっちょ君と一緒に解いた! 実装が辛い。 問題へのリンク 問題概要 頂点数が である凸多角形が与えられる。この凸多角形の面積を とする。 今、凸多角形の隣接しない 2 頂点を結ぶ直線によって凸多角形を 2 つの多角形に分ける。そして、2 つの多角形う…
素直な実装でも解けるけど、C++ の map 型や、Python の Counter 型が使えると、すごく簡単に解けます! 問題へのリンク 問題概要 本のパスタがあって、それぞれ長さは である。 高橋君は 日間パスタを食べる。 日目にはそれぞれ長さが であるようなパスタを…
前から "PC" 詰めしていけば OK!! 問題へのリンク 問題概要 のグリッドが与えられる。各マスには文字 '.' か 'T' が書かれている。今、次の操作をできるだけ多く行いたいとする。 左右に 2 文字連続した "TT" を "PC" に置き換える 操作回数の最大化を目指…
「要素の削除」をする必要がある場合は set が使えたりする 問題へのリンク 問題概要 最初、頂点数 、辺数 のグラフがある。 このグラフに対して次の 個のクエリに答えて、毎クエリ後にその時点での「グラフの孤立点の個数」を出力せよ。 クエリタイプ 1 (1 …
すごく典型的ないい問題! この手の問題は、大抵、二分探索法でもしゃくとり法でも解ける。 問題へのリンク 問題概要 2 つの数列 と が与えられる。 これらの数列から 1 つずつの値を選ぶ。選んだ値の差が 以下となるようにすることが可能かどうかを判定し、…
DFS などの探索をしても解けるし、単に次数を見るだけでも解ける。 問題へのリンク 問題概要 個の葉をもつスターグラフを、レベル のスターと呼ぶことにする。 高橋君は、はじめ何個かのスターからなるグラフを持っている。これらのスターの頂点数の総和は …
set をちゃんと使えるかを試す問題! 問題へのリンク 問題概要 高橋くんは最初、体力は であり、二次元平面上の座標 にいる。 高橋くんは今から 回の移動を行う。高橋くんの移動方法は長さ の文字列 で表される。1 回の移動は、上下左右のいずれかであり、そ…
ランレングス圧縮をする問題に一瞬見えるかもしれない。でもそんなことしないで、最初から最後まで綺麗に DP で殴れる! 問題へのリンク 問題概要 文字 'a' と 'A' のみからなる長さ の文字列 が与えられる。 以下のキーボード操作を繰り返すことで、この文…
プリューファーコード! それを知っていれば FPS 解法は自然。 問題へのリンク 問題概要 以上 以下の整数集合の部分集合 {} が与えられる。 頂点に と番号のついた頂点数 の木であって、各頂点の次数が集合 に含まれているようなものの個数を 998244353 で割…
Suffix Array を用いる練習問題! ACL practice contest にもある。 問題へのリンク 問題概要 長さが の文字列 が与えられる。 の連続する部分文字列の種類数を答えよ。 制約 考えたこと 実は、AtCoder Library Practice Contest に全く同じ問題がある! drk…
「並び替え方」の全探索は、C++ なら next_permutation()、Python3 なら itertools.permutations() が使える! 問題へのリンク 問題概要 個の長さ の文字列 が与えられる。 これらを並び替えて得られる文字列 であって、 「 と が 1 文字違いである」() とい…
本当に ACL の convolution をそのまま試してほしいという問題ですね。 問題へのリンク 問題概要 整数列 と、整数列 が与えられる。 によって定義される整数列 を求めよ。 制約 解法 とにかく、ACL のドキュメントにそのままの式が書いてある! https://atco…
Miller-Rabin 法や、モンゴメリ乗算を試せる問題ですね! 問題へのリンク 問題概要 クエリが 個与えられる。 各クエリでは正整数 が与えられるので、素数かどうか判定せよ。 制約 解法 Miller-Rabin 法が使える。次のようなアルゴリズムである。 のとき:素…
ミラー・ラビンの素数判定法は、その背景にある整数論的考察もめっちゃ面白いので、ぜひそれも味わいましょう!! 1. はじめに 本記事では正の整数 が与えられたときに、 が素数であるか否かを判定する問題を考えます。 よく知られた方法は、 を で順に試し…
これも Yosupo Judge の問題名でタイトル検索しても出てくるように。 問題へのリンク 問題概要 頂点 辺の無向グラフが与えられる。 番目の辺は頂点 を結ぶ。単純グラフとは限らない。 与えられたグラフにサイクルが含まれるならば、辺素かつ頂点素なサイクル…
Yosupo Judge の問題名でタイトル検索しても出てくるように。 問題へのリンク 問題概要 頂点 辺の有向グラフが与えられる。 番目の辺は頂点 を結ぶ。単純グラフとは限らないが、自己ループはない。 与えられたグラフにサイクルが含まれるならば、辺素なサイ…
私たちは、グラフアルゴリズムとして DFS や BFS を学ぶと 頂点 s から頂点 t へ辿り着けるかどうかを判定する 連結成分の個数を求める 二部グラフ判定する トポロジカルソートする などといった例題を次々とこなしていき、グラフ探索スキルを高めていく道を…
これ、一見すると の計算量が必要に思えてしまうね! 問題へのリンク 問題概要 正の整数 が与えられる。 かつ であるような正の整数の組 の個数を求めよ。 制約 の範囲を絞る 約数列挙アルゴリズムなどでもお馴染みの、大小関係から整数の範囲を絞って探索す…
なんかユーザー解説の数がすごいことになっててビビる! 問題へのリンク editorials 問題概要 以下の正の整数 の組であって、 が平方数であるようなものの個数を求めよ。 制約 考えたこと この手の問題では「ある変数を固定して考える」という常套手段がある…
これも最近よく見る「整数の式で表された条件を扱う探索問題」の一味ですね! 問題へのリンク 問題概要 整数 が与えられる。 正の整数 の組であって、 を満たすものの個数を求めよ。 制約 考えたこと もし計算時間をまったく気にしなくてよいならば、次のよ…
ちょっと面白い問題! 競プロ始めたばかりの方々に、計算量のことを意識させるのに良い問題かもしれない。 問題へのリンク 問題概要 どの 2 つの値も互いに相異なるような、長さ の数列 が与えられる。 この数列 の異なる 2 要素の和として表せる値の中に偶…
「ある量を固定して考えるとよい」「 まで調べればよい」という 2 つの典型を組み合わせて解ける問題ですね! 問題へのリンク 問題概要 正の整数 が与えられる。 以上の整数のうち、 以上 以下の 2 つの整数 の積 として書ける最小の整数を求めよ。 そのよう…
Binary Trie + 平方分割 問題へのリンク editorials 問題概要 数列 に対して、以下の 個のクエリを処理せよ。 クエリタイプ 1 (k x): を xor に置き換える クエリタイプ 2 (l r x): xor の値を出力する 制約 考えたこと これは TL で解法を見た上で解いた…
これ系は好き! これに近いのを ABC-D で最近よく見かける気がする。 問題へのリンク 問題概要 整数 が与えられる。 3 つの整数の組 であって、 がすべて 以下であるようなものの個数を 998244353 で割ったあまりを求めよ。 ケース与えられる。 制約 考えた…
FPS による考察はやっぱり強力ですね! 問題へのリンク 問題概要 長さ かつ総和 である非負整数列 のうち、以下の条件を満たすものの個数を 998244353 で割ったあまりを求めよ。 「以下の操作のうちどちらかを選んで行うことを繰り返して、 の全ての要素を 0…
「ABC 301 E - Pac-Takahashi」の類題とも言うべき ICPC 系の問題! 問題へのリンク (AOJ) 問題へのリンク (AtCoder) editorials 問題概要 頂点数 、辺数 の重み付き無向グラフが与えられる。頂点番号は とする。 番目の辺は頂点 を結んでおり、その重みは …
前処理して頂点数を減らしたグラフ上で TSP!!! ICPC ではすごくよく見るパターンですね! 問題へのリンク 問題概要 サイズのグリッドがある。各マスは 壁マス:'#' 通路マス:'.' お菓子マス:'o' (18 個以内であることが保証される) スタートマス:'S' …
基本的に Greedy にやればよさそうなのに、意外とやりづらい問題。基本に忠実にやれば解ける! 問題へのリンク 問題概要 文字 '0', '1', '?' のみからなる文字列 が与えられる。 中の各 '?' をそれぞれ '0' または '1' に置き換えて得られる文字列を二進法表…
結構整理するの大変! 茶色あっても良さそうだと思ったけど、灰色上位問題だった。 問題へのリンク 問題概要 2 つの長さ の文字列 が与えられる。これらは英小文字または文字 '@' のみからなる。 の各文字 '@' は、"atcoder" に含まれるいずれかの文字に変え…