[AOJ] No. 0321 部活動調査
各生徒をノードに見立てて、隣接リストを構築します。生徒 \( i \) が所属している部活動を \( g_i \) とし、所属が未確定のときを \( g_i = 0 \) とします。生徒 \( a, b \) が同じ部活動に所 ...
[AOJ] No. 0340 パンケーキ
両端のパンケーキは \( 1 \) 枚だけ裏返すことができることに着目します。左端のパンケーキは単独で裏返す回数を \( k \) とすると、最小値を達成するためには、\( 0 \leq k \leq p_1 \) であること ...
[yukicoder] No. 0944 煎っぞ!
コーヒー豆のおいしさ度の候補は、累積和の数だけあるので、\( N \) 通りあることがわかります。ここで、累積和を
\
とします。おいしさ度を \( s_i \) と固定したとき、条件を満たすような分割 ...
[AtCoder] ABC 146 D – Coloring Edges on Tree
必要な色の数は、頂点の最大次数となるので、任意の頂点から幅優先探索を行い、色を振り分けていきます。辺の色を順番に出力する必要があるので、マップを使って管理します。また、色を分けるときに使用できない色を管理するためにセットを使い ...
[AOJ] No. 0410 アカベコ20
参加するメンバーの組み合わせは \( 2^{N} – 1\) 通りあるので、ビット全探索を行います。周期が同じメンバーが増えても必ず同じ公演に参加することになるので、参加するメンバーの組み合わせが増えることはありま ...
[AtCoder] ABC 147 C – HonestOrUnkind2
ある人は正直者か不親切な人かの \( 2 \) 通りなので、全体で \( 2^N \) のパターンがあります。なので、ビット全探索を行います。人 \( i \) が正直者としたとき、その証言が現在のビットの状態と同 ...
[AtCoder] 三井住友信託銀行プログラミングコンテスト2019 D – Lucky PIN
長さが \( N \) の文字列から \( 3 \) 文字取り出すことを考えると、計算量は \( {}_{N} \mathrm{ C }_{3}\) となってしまうので、別の方法を考えます。考えられる文字列は \( 1000 ...
[AtCoder] ABC 146 C – Buy an Integer
\( f(N) = AN + Bd(N)\) とすると、\( f(N) \) は増加関数なので、二分探索を行います。整数の桁数は、対数を使うよりも、数値を文字列に変換してから長さを得る方が良いと思います。
コード#inc ...
[AtCoder] ABC 145 C – Average Length
順列を生成して距離を計算します。
コード#include <bits/stdc++.h>using namespace std;typedef long long ll;int a;bool flag;dou ...
[AtCoder] ABC 087 D – People on a Line
座標間の距離が与えられるので、相対的な位置が分かります。したがって、ある座標の値を \( x_i = 0 \) として、\( M \) 個の情報に誤りがあるかどうかを調べます。
グラフ各座標をグラフの頂点として、\ ...