[AOJ] No. 0261 マヤの大予言
時刻の変換と同じように、いったん最小単位に変換してから計算を行います。西暦からマヤ歴への変換は、2012年12月21日からどれだけの日数が経過したかどうかを計算します。このときうるう日に気を付けます。マヤ歴から西暦への変換は、 ...
[AOJ] No. 0260 パイプつなぎ職人の給料
ジョイントの使う順番は給料に影響を与えないので、ジョイントを使うときは最大のものから使うべきです。したがって、ジョイントを降順に並べ、全探索を行います。ジョイントを使う度にパイプの本数が減る一方で、ジョイント分の長さが加算され ...
[AOJ] No. 0282 プログラミングコンテスト
点数が更新されたとき、その時点で最も高い得点を持つチームの番号が分かればよいので、セグメント木を使います。クエリは全区間を対象とするので、根の値が最も高い得点を持つチームの番号となります。
コード#include < ...
[AOJ] DSL_2_A Range Minimum Query (RMQ)
平方分割でこの問題を解いたことがありますが、セグメント木を使って解きました。
コード#include <bits/stdc++.h>using namespace std;typedef long long ll; ...
[AOJ] No. 0300 フロッピーキューブ
パズルは最大でも \( 8 \) 回の操作で解くことができるので、\( 4^7 \) 通りのパターンを調べれば良いです。したがって、深さ優先探索を行い、実際にシミュレーションを行います。
コード#include < ...
[AOJ] No. 0299 鉄道路線II
買い物をする駅の番号の順番を変えても影響がないので、\( d_i \) を昇順に整列させます。ここで、\( d_i < p \) を満たす最大の \( d_i \) を \( l \) とし、\( d_i > p ...
[AOJ] No. 0321 部活動調査
各生徒をノードに見立てて、隣接リストを構築します。生徒 \( i \) が所属している部活動を \( g_i \) とし、所属が未確定のときを \( g_i = 0 \) とします。生徒 \( a, b \) が同じ部活動に所 ...
[AOJ] No. 0320 品質管理
コースターの画像のピクセルの添え字は、\( i \) 行 \( j \) 列を表していて、\( 0 \leq i \leq N – 1 \wedge 0 \leq j \leq N – 1 \) として ...
[AOJ] No. 0341 繰り返す呪文
動的計画法を行います。\( d(i, j) \) を \( t \) の \( j \) 番目までの部分文字列において、\( b \) の \( j \) 番目までの部分文字列の出現回数とします。初期値は、\( d(i, 0) ...
[AOJ] No. 0340 パンケーキ
両端のパンケーキは \( 1 \) 枚だけ裏返すことができることに着目します。左端のパンケーキは単独で裏返す回数を \( k \) とすると、最小値を達成するためには、\( 0 \leq k \leq p_1 \) であること ...