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

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

2023-09-01から1ヶ月間の記事一覧

AtCoder ABC 321 D - Set Menu (緑色, 400 点)

「二分探索 lower_bound()」「累積和」を活用する、とてもとても典型的かつ教育的な問題ですね。 問題へのリンク 問題概要 サイズ の数列 と、サイズ の数列 が与えられる。 これらの数列から 1 個ずつ選んでできる 通りの各ペア についての、 の総和を求め…

AtCoder ABC 321 C - 321-like Searcher (茶色, 300 点)

久しぶりの、再帰関数を書きたくなるタイプの全探索! 問題へのリンク 問題概要 各桁の数値が狭義単調減少になっている数を 321-like 数と呼ぶ。 番目の 321-like 数を求めよ。 制約 321-like 数の個数 解法 (1):異常 10 重 for 文 この解法は本当に根性で…

AtCoder ABC 321 B - Cutoff (灰色, 200 点)

意外とややこしい問題。 ラウンド目の成績によっては、これまでの暫定の最大スコアと最小スコアが変わるかもしれないという点に注意! 問題へのリンク 問題概要 ラウンドの試験が行われる。各ラウンドの得点は 0 以上 100 以下の整数値である。全ラウンドの…

AtCoder ABC 321 A - 321-like Checker (灰色, 100 点)

入力を文字列として受け取ってしまうのが楽だと思う! 問題へのリンク 問題概要 各桁の値が単調減少 (等しいはダメ) になっている数を 321-like 数と呼ぶことにする。 たとえば、971 や 5 は 321-like 数であるが、978 や 988 は 321-like 数ではない。 与え…

AtCoder ABC 284 C - Count Connected Components (灰色, 300 点)

グラフ探索の問題として、人生で最初に解きたい問題!! 問題へのリンク 問題概要 頂点数 、辺数 の単純な無向グラフが与えられる。 このグラフの連結成分の個数を求めよ。 制約 解法 まず、単純グラフや連結成分という概念についてはこちら! algo-method.c…

AtCoder ABC 321 G - Electric Circuit (橙色, 600 点)

除原理! 学びの多い問題だった。Subset Convolution の方はちょっと頑張ってこの後復習する。 問題へのリンク 問題概要 頂点番号が であるグラフ がある。最初、辺は 1 本もない。 以上 以下の値からなるサイズ の 2 つの数列 と がある。 今、これら 2 つ…

AtCoder ABC 321 F - #(subset sum = K) with Add and Erase (青色, 525 点)

「戻す DP」または「FPS」で! 問題へのリンク 問題概要 最初、箱は空である。以下の操作を 回行う。各操作後において、以下の値を答えよ。 箱に入っているボールをいくつか選ぶ方法であって、ボールに書かれた数値の総和が となる方法の個数を 998244353 で…

AtCoder ABC 321 E - Complete Binary Tree (青色, 450 点)

この問題をキッカケに準完全二分木のライブラリを拡充した! 問題へのリンク 問題概要 頂点数 の根付き木が与えられる。頂点番号は である。各頂点 (> 2) について、親頂点は である。 この根付き木において、頂点 からの距離が であるような頂点の個数を求…

JOIG 2023 C - 鐘 (AOJ 0759, 難易度 4)

直線がいくつかの区間に分かれているとき、点がどの区間に属するかを求めたいとなったら、lower_bound()!!! 問題へのリンク 問題概要 数直線上に 個の鐘がある。 番目の鐘は座標 の地点に配置されている。 地点 の人の聞く鐘の音の強さは、各鐘 に対する …

JOIG 2023 B - 絶対階差数列 (AOJ 0758, 難易度 2)

いわゆる「愚直シミュレーション」と呼ばれる分野の問題ですね。問題文で指示されたことを、とにかく愚直に忠実に実装できるかが問われています。地味な印象を受けるかもですが、大切なスキルです! 問題へのリンク 問題概要 黒板に、はじめ 個の整数値 が書…

JOIG 2023 A - 末尾の文字 (AOJ 0757, 難易度 1)

文字列の練習! 問題へのリンク 問題概要 英大文字のみからなる、長さ の文字列 が与えられる。 の末尾の文字が 'G' 以外のとき: の末尾に文字 'G' を挿入して得られる文字列を の末尾の文字が 'G' であるとき: の末尾の文字 'G' を削除して得られる文字列…

JOI 予選 2007 F - 通学経路 (AOJ 0515, 難易度 4)

DP の典型問題だけど、最初は難しく感じるかもしれない。あと、縦横が微妙に混乱するね。 問題へのリンク editorial 問題概要 (今風に表現改) のグリッドが与えられる。このグリッドで上から 番目、左から 番目のマスを と書くことにする。最初、マス に駒が…

JOI 予選 2007 E - 品質検査 (AOJ 0514, 難易度 5)

この辺りから難しくなって来てる。「 で合格・不合格」という条件をどのように適切に言い換えるかが問われている。 問題へのリンク 問題概要 電源が 個、モーターが 個、ケーブルが 個ある。電源は と番号づけられていて、モーターは と番号づけられていて、…

JOI 予選 2007 D - カードの並び替え (AOJ 0513, 難易度 3)

難しくはないけど、やることが複雑だし、問題文を読み解くのがハードな問題! この手の問題は、解けないと思ったら、実際のコードを見てしまう方が早いと思う。 問題へのリンク editorial 問題概要 正の整数 が与えられる。 1 から までの数値が書かれたカー…

JOI 予選 2007 C - シーザー暗号 (AOJ 0512, 難易度 2)

アルファベットを戻す処理を書くのが最初は難しいかもしれない 問題へのリンク editorial 問題概要 シーザー暗号とは、文字列に対して、各文字を 3 つずつ進めたものに変換するものである。ただし、X, Y, Z はそれぞれ A, B, C となる。具体的には、次のよう…

JOI 予選 2007 B - 未提出者は誰だ (AOJ 0511, 難易度 2)

for 文を二重にしたり、フラグを管理したりする練習! 問題へのリンク editorial 問題概要 個の整数値が与えられる。これらの整数値は 以上 以下の整数から 2 個を除外したものとなっている。 その除外された 2 個の整数値を小さい順に答えよ。 考えたこと …

JOI 予選 2007 A - 得点 (AOJ 0510, 難易度 1)

入出力の練習と、関数 max() を使う練習! 問題へのリンク 問題概要 A さんの情報の得点,数学の得点,理科の得点,英語の得点 B さんの情報の得点,数学の得点,理科の得点,英語の得点 がそれぞれ与えられる (合計 8 個の整数値が与えられる)。A さんの 4 …

JOI 本選 2023 A - 碁石ならべ 2 (難易度 6)

どうなっているのかを観察して計算量を減らす系。観察力が問われる! 問題へのリンク editorials 問題概要 個の碁石を左から順に並べていく。 番目に並べる碁石の色は である ( 以上 以下の数値)。碁石を並べるときの規則は次のようになる。 番目の碁石を 番…

Union-Find の中身のグループ分けを知る関数 groups() を実装する!

多くの競プロerにとって、標準ライブラリ以外で自分の手で初めて実装するデータ構造は Union-Find でしょう。 自分でデータ構造を実装するとき、その中身がどうなっているかをきちんと把握できないと不安を感じてしまうこともあるでしょう。そこで本記事では…

AtCoder ABC 320 F - Fuel Round Trip (黄色, 550 点)

少し重たかった。でもいい問題。JOI にありそう。 問題へのリンク 問題概要 数直線上に 箇所の燃料補給所がある。 番目の補給所は次のようになっている。 座標 にある 補給すると、現在の HP が であるとき、HP が になる (コストとして を支払う) 今、高橋…

AtCoder ABC 320 G - Slot Strategy 2 (Hard) (橙色, 600 点)

広く捉えれば「各スロットに対して止める秒数を割り当てる」方法を考える割当問題だと言えそう。 問題へのリンク 問題概要 のグリッド が与えられる。各マスには 0 から 9 までの数字が描かれている。 今、次の条件を満たす 0 以上の整数値 を考えたとき、 …

AtCoder AGC 005 F - Many Easy Problems (銅色, 1900 点)

Polynomial Taylor Shift が使えた! 問題へのリンク 問題概要 頂点数 の木が与えられる。各 に対して、次の問いに答えよ。 頂点から 個の頂点を選ぶ 通りの方法それぞれについて その 個の頂点をすべて含む連結な部分グラフのサイズとして考えられる最小値…

鉄則本 A58 - RMQ (Range Maximum Queries)

セグメント木の最初の練習問題によさそうな問題 問題へのリンク 問題概要 長さ の数列 がある。最初はすべての要素が 0 となっている。この数列に対して、以下の 2 種類のクエリに答えよ ( 個のクエリが与えられる)。 クエリ 1: が与えられるので、 の値を …

Codeforces Round 897 (Div. 2) D. Cyclic Operations

Functional Graph のサイクル列挙!!! ライブラリ整備したことがあったおかげでライブラリ使えてよかった! 問題へのリンク 問題概要 (意訳) 要素数 の数列 があって、はじめは全要素が 0 となっている。以下の操作を好きな回数だけ行って、数列を の状態…

AOJ 2369 CatChecker (JAG 冬合宿 2010 day3-A) (300 点)

カッコ列の整合性判定問題の亜種と言える。 問題へのリンク 問題概要 文字列 が cat 文字列であるとは、次の条件を満たすことをいう。 は空文字列である ある cat 文字列 が存在して、 と表せる 与えられた文字列 が cat 文字列であるかどうかを判定せよ。 …

CodeQUEEN 2023 決勝 F - Queen's Crown

AOJ 2373 HullMarathon とよく似た問題。 問題へのリンク 問題概要 二次元平面上に 点を以下の条件を満たすように配置する。各点を とし、偏角を とする。 点 と、原点との距離は このとき、多角形 の面積の最大値を求めよ。 制約 考えたこと ほとんどこの問…

Yosupo Library Checker - Polynomial Taylor Shift

面白かった! 問題へのリンク 問題概要 整数係数の多項式 と、整数定数 が与えられる。 を展開したときの各係数を 998244353 で割った余りを求めよ。 制約 考えたこと Polynomial Taylor Shift については、次の記事に詳しく書いた。計算量は となる。 drken…

「Polynomial Taylor Shift」に学ぶ畳み込み芸

Polynomial Taylor Shift を履修したので、簡単にまとめてみます。例によって、Yosupo Library Checker の 問題 を通します。 なお、Polynomial Taylor Shift の解法は、単なるライブラリ整備の一環とみなすというよりは、その導出過程をぜひ押さえておきた…

New Year Contest 2015 E - ひも

プリューファーコードが使える問題! 今でこそ高度典型となったが、当時は知られていなかった気がする。 問題へのリンク 問題概要 頂点数が であるような完全グラフの全域木であって、以下の条件を満たすものの個数を 1000000007 で割ったあまりを求めよ。 …

Codeforces Round 539 (Div. 1) D. Sasha and Interesting Fact from Graph Theory (R2400)

また一つ、プリューファーコードの練習問題が増えた! 問題へのリンク 問題概要 正の整数値 が与えられる。 頂点数 の重み付き木であって、以下の条件を満たすものの個数を 1000000007 で割った余りを求めよ。 各辺の重みは 以上 以下の整数値である 2 頂点 …