各kに対して
実装が少し大変だった。そして、両端から Greedy で追い詰めていけばよいのは思いつかなかった。チームメイトが思いついていた。 問題へのリンク 問題概要 1 から までの整数が書かれたカードが合計で 枚あり、整数 の書かれたカードは 枚ある。各 に対して…
で解けた! 同じ値が連続する場合の対処に苦慮した。 問題へのリンク 問題概要 強さが のスライムが一列にこの順に並んでいる。 に対して、次の問に答えよ。 【問】 初期状態で左から 番目にいるスライムが高橋君である。高橋君が下記の行動を好きな回数だけ…
Block-Cut 木を試すのにすごくいい問題! 問題へのリンク 問題概要 頂点数 、辺数 の連結な無向グラフが与えられる(単純とは限らない)。頂点 には、重み がついている。各頂点について、以下の問に答えよ。 【問】 その頂点を除外したグラフを考える。この…
いい感じの教育的典型問題。いもす法したあとに累積和する! 問題へのリンク 問題概要 個のマス がある。 個の区間があって、それぞれマス からマス までを連続して覆っている。 個の区間によって一回以上被覆されるマスの集合を とする。 各区間について、…
すごく面白い問題だった! 二重頂点連結成分分解からの Block-Cut 木ライブラリを試す目的で解いてみた。 問題へのリンク 問題概要 二次元平面上に 個の点がある。各点について、次の問に答えよ。 その点を除去した上で、各点に対応する頂点数 のグラフを考…
「グラフ」の基礎問題! グラフを知らなくても解ける。 問題へのリンク 問題概要 個の都市 () があり、 本の道路がある。 番目の道路は、都市 と都市 を結んでいる。同じ 2 つの都市を結ぶ道路は、1 本とは限らない。 各都市から他の都市に向けて、何本の道…
集合型を学ぼう! 問題へのリンク 問題概要 個の文字列 がこの順に与えられる。 初出の文字列に対して、その添字を出力せよ。 制約 解説 0-indexed で考えます。つまり、文字列を とします(出力するときには 1 を足します)。 まずは計算量のことを考えずに…
連想配列(辞書)の練習問題! 問題へのリンク 問題概要 文字列 が与えられる。 各 に対して、 となる が存在しない場合は をそのまま出力せよ となる が存在する場合は、その個数を としたとき、 に "(k)" を付して出力せよ 制約 考えたこと 問題文で言われ…
いかにも stack が登場しそうな問題! 問題へのリンク 問題概要 下の図のように、高さが の仕切りが等間隔に並んでいて、その間と両端の カ所のスペースを表す番号を とする。これらは幅が等しい。 今、スペース 0 に水を入れていく。1 個分のスペースについ…
map の練習問題! 問題へのリンク 問題概要 長さ の数列 が与えられる。 各 について、 かつ を満たす最大の整数 を求めよ(存在しない場合は -1)。 制約 考えたこと 基本的には次の情報を管理できる配列が欲しい。 last[v]:その時点で、 を満たす最大の …
スタックの応用問題! ヒストグラムの最大長方形を求めるアルゴリズムと似たようなスタックの使い方をする! 問題へのリンク 問題概要 長さ の数列 が与えられる。これらの値は互いに相異なる。 各 に対して、次の条件を満たす整数 の個数を求めよ。 なる任…
多重 for 文の練習問題! 問題へのリンク 問題概要 二次元平面上に 人の学生と、 個のチェックポイントがある。学生 は座標 にいて、チェックポイント は座標 にいる。 各学生について、その学生からマンハッタン距離が最も近いチェックポイントを求めよ (タ…
方針を立てるのは難しくないけど、とにかく重たい問題だった。 問題へのリンク 問題概要 人 に対して合計 票が集まった。これらの人のうち条件「自分よりも多くの票を集めた人が 人未満」を満たす人が当選となる。 票のうち途中まで開票されて、各人 には 票…
スタックを用いて解決できる典型問題 問題へのリンク 問題概要 長さ の数列 が与えられる。 各 に対して、 かつ を満たす最大の を求めよ (存在しない場合は -1)。 制約 メモ スタックを使うと の計算量で解ける。詳細は鉄則本を参照。 コード #include <bits/stdc++.h> usi</bits/stdc++.h>…
この手のスタックの問題はもうすっかり常識と化した! 問題へのリンク 問題概要 ビル がこの順に並んでいる。ビル の高さは である。 各 に対して、ビル の間にビル より高いものがないような () の個数を求めよ。 制約 考えたこと いかにもスタックを使いそ…
バケットを活用する練習問題! 問題へのリンク 問題概要 AtCoder 王国には 家がある。どこかの家で順に 人の赤子が生まれた。 人目の赤子は家 で生まれ、性別は ('M' または 'F')であった。 各赤子が長男であるかどうかを判定せよ。 制約 考えたこと 人目…
グリッドが幅広いが、黒色マスの周辺でしか「3 x 3 内部に黒色マスがある」という状況が発生しないことを活用する! 問題へのリンク 問題概要 グリッドの各マスは白色または黒色である。 個のマスが黒色である(座標が与えられる)。 このグリッド内部の各 3…
面白い探索問題 問題へのリンク 問題概要 座標平面上に 個の点がある。点 の座標は である。 各 に対して、点 の距離が最大であるような の値を求めよ(タイがある場合は が最小のもの)。 制約 考えたこと 各 に対して、別々の問題を解く。 に対して (X[i] …
Euler Tour して、遅延評価セグ木(区間加算 + 区間 min)に乗せて......という解法を考えていたところに、あまりにもシンプルな想定解法を目にして、感動した! 問題へのリンク 問題概要 頂点数 の重み付き木が与えられる。 に対して、次の問に答えよ。 個…
どのようにデータを管理すればよいか、難しいと感じるかもしれない。 問題へのリンク 問題概要 最初、箱 にそれぞれボール が入っている。 次の 回の操作を行う。 回目の操作では、ボール が入っている箱から、ボール を取り出して、それを箱 に入れる。 操…
一見難しく見えるけど、実は単純な問題! 問題へのリンク 問題概要 整数 の書かれた 個の宝箱と、整数 の書かれた 個の鍵がある。 宝箱 は整数 が書かれた鍵を使うことで解錠できる。同じ鍵を使って複数の宝箱を解錠してもよい。 解錠できる宝箱の個数の最大…
for 文を回しながら、隣接要素を見ていく練習をしよう! 問題へのリンク 問題概要 個の整数 が与えられる。 に対して、 の値を順に求めよ。 制約 考えたこと for 文を回しながら、隣の要素も同時に見ていくスキルを習得しよう! コード #include <bits/stdc++.h> using name</bits/stdc++.h>…
愚直に数えるのが簡単だと思う。 問題へのリンク 問題概要 人の生徒のマラソン大会のタイム が与えられる。 各生徒の順位を求めよ。具体的には各生徒 について、( 未満のタイムの個数) + 1 を求めよ。 制約 解法 各 に対して、具体的に「( 未満のタイムの個…
ソートに関する練習問題! 問題へのリンク 問題概要 長さ の数列 と、長さ の数列 が与えられる。これらの数列の値はすべて互いに相異なる。 これらの 2 つの数列の各要素 について、次の値を求めよ。 2 つの数列を連結してできる長さ の数列を小さい順に並…
この手のシミュレーションになれることはとても大事! 問題へのリンク 問題概要 あるチケット売り場は、待合行列がなければ、来た人の受付に 秒かかる。 人の人 は、それぞれ時刻 に到着する。まだ受付されていない人がいる場合は後ろに並ぶ。 人 がそれぞれ…
LIS の応用問題。LIS を分かっていれば、その DP の過程を保存しておくことで、この問題が解けることがわかる! 問題へのリンク 問題概要 長さ の数列 が与えられる。 各 について、要素 を含むような数列 の LIS が存在するかどうかを判定せよ。 (マルチテ…
二次元いもす法の練習問題 問題へのリンク 問題概要 二次元平面上に 枚の長方形の紙がある。 枚目の紙の左下の座標は であり、右上の座標は である。 紙に覆われている部分の面積を求めよ。 制約 考えたこと 二次元いもす法の練習。 github.com コード #incl…
二次元いもす法! 問題へのリンク 問題概要 のグリッドにおいて、 日間雪が降った。 日目には、マス を左上とし、 を右上とする長方形領域に雪が 1 cm だけ降った (溶けないとする)。 最終的な各マスの積雪量を求めよ。 制約 解法 二次元いもす法をします。…
これは A07 と大体一緒ですね! 問題へのリンク 問題概要 あるコンビニは時刻 0 に開店し、時刻 に閉店する。 人の従業員が働いていて、従業員 は時刻 に出勤して、時刻 に退勤する。 について、時刻 に何人の従業員が働いているかを求めよ。 制約 解法 gith…
いもす法!! 問題へのリンク 問題概要 日間のイベントに 人の参加者が出席した。参加者 は 日目から 日目まで出席した。 各日の出席者数を求めよ。 制約 解法 鉄則本の問題なので、本の方を参照!! コード #include <bits/stdc++.h> using namespace std; int main() { in</bits/stdc++.h>…