AOJ Volume2

AOJ0229 Big Hit !

問題リンク Big Hit ! 解法 揃った絵柄とボーナスの通りにメダルの枚数を計算するだけです。 ソース

AOJ0228 Seven Segments

問題リンク Seven Segments 解法 0〜9を"0""1"で表現しておきます。ある数xからyへ変更するには、それらの間で0と1が反転しているビットの所に1を立てればいいです。 ソース

AOJ0227 Thanksgiving

問題リンク Thanksgiving 解法 野菜を値段でソートします。合計額をなるべく小さくしたいので、値段の高い野菜を割引の対象にしたいことになります。これは、袋に値段の高い順に貪欲に突っ込んでいくことで、高い野菜を割引対象にすることができます。 ソース

AOJ0226 Hit and Blow

問題リンク Hit and Blow 解法 数えるだけです。 ソース

AOJ0225 Kobutanukitsuneko

問題リンク Kobutanukitsuneko 解法 アルファベットの文字を頂点にしたグラフを作ることで解けます。 例えば、abcという言葉があったら、'a'という頂点から'c'という頂点へ有向辺を引きます。これは、しりとり中にabcという単語を使ったら、この辺を使うとい…

AOJ0224 Bicycle Diet

問題リンク Bicycle Diet 解法 (場所, 訪れたケーキ屋の集合)を対にしたグラフで最短経路探索です。今回は負っぽい値が出てくるのでベルマンフォード法を使いました。 場所iからjへの移動コストは距離*kです。ただし、行こうとしている場所がケーキ屋で、既…

AOJ0223 Stray Twins

問題リンク Stray Twins 解法 2人の子供の位置を対にしたノードで幅優先探索します。 2人が互いに逆向きに進むというのに注意しましょう。 ソース

AOJ0222 Prime Quadruplet

問題リンク Prime Quadruplet 解法 大きさ10^7のエラトステネスの篩を作ります。そして、N, N-2, N-6, N-8が全て素数であるようなNを列挙しておきます。 入力のnを受け取ったら、列挙されたNの中でnより小さくて一番大きいものを探します。 ソース

AOJ0221 FizzBuzz

問題リンク FizzBuzz 解法 1ステップずつシミュレーションしていくだけです。 人はListで表現し、発言する人のインデックスkを覚えておきます。発言があったときに、正しい答えとkの人の発言が合っていなかったら、リストからkを除き、kを更新します。 ソース

AOJ0220 Binary Digit A Doctor Loved

問題リンク Binary Digit A Doctor Loved 解法 小数部が4ケタ以内で表せる小数は16倍すれば(全体を左へ4ビットシフトすれば)整数になるはずです。なので、入力された値を16倍して、小数点以下が0になっているかを調べればいいです。 ソース

AOJ0219 A Popular Ice-cream Shop

問題リンク A Popular Ice-cream Shop 解法 各アイスについて売れた個数のヒストグラムを出すだけです。 ソース

AOJ0218 Dividing Students

問題リンク Dividing Students 解法 定義通りにクラス分けするだけです。 ソース

AOJ0217 Walking in the Hospital

問題リンク Walking in the Hospital 解法 最大値を更新していくだけです。 ソース

AOJ0216 Cutting Down Water Bills

問題リンク Cutting Down Water Bills 解法 計算するだけです。 ソース

AOJ0215 Pachimon Creature

問題リンク Pachimon Creature 解法 ダイクストラを5回やることで解きました。 マス(i, j)と(y, x)の距離ですが、このボード中に通れないマスというのは存在しないので2点間のマンハッタン距離がそのまま移動コストとなります。 次に、最初に持つパチモンの…

AOJ0214 Autumnal Illumination

問題リンク Autumnal Illumination 解法 幾何問題です。 凸多角形同士の接触判定をバグ無くかけるかがカギになります。 凸多角形i, jが衝突しているとは以下のいずれかを満たすことを指します。 1. jが完全にiの内側に入っている 2. iが完全にjの内側に入っ…

AOJ0213 Subdivide The Land

問題リンク Subdivide The Land 解法 全探索+枝刈りです。 i番目の人の求める面積がSだとします。このとき、面積Sであるような長方形で且つ数字iを囲むような長方形の置き方を全通り試します。このとき、他の人と領域がかぶってしまったりする場合枝刈りを加…

AOJ0212 Highway Express Bus

問題リンク Highway Express Bus 解法 (都市, 残りの割引券)をノードにしたダイクストラで解けます。 ソース

AOJ0211 Jogging

問題リンク Jogging 解法 ある生徒 i と別の生徒 j が小学校で会うのはそれぞれki周とkj周走った時です。生徒 i が別の生徒 k と一緒に小学校に会うには、 それぞれ ki'周とkk周走った時です。生徒 i が生徒j, kと共に一緒に小学校に会うには、kiとki'の最小…

AOJ0210 The Squares

問題リンク The Squares 解法 シミュレーションです。1ステップにつき、人がどう動くかは一意に決まるのでステップごとに適切にマップを書き変えていく方針で解けると思います。 これを解いたのが昔過ぎてソースを見ても何をしてるのかよくわからn(ry ソース

AOJ0209 Scene in a Picture

問題リンク Scene in a Picture 解法 M*Mの画像を回転させて4つのパターンを求めておき、N*Nの中で一致する個所があるかを探します。 M*M*N*N*4の計算量オーダとなりますが、どうやら間に合ってしまうようです。 ソース

AOJ0208 Room Numbers of a Hospital

問題リンク Room Numbers of a Hospital 解法 4と6が使えないので新部屋番号は[0, 1, 2, 3, 4, 5, 6, 7]を[0, 1, 2, 3, 5, 7, 8, 9]のように表す8進数として考えることができます。 与えられたnが15のとき、1*8^1 + 7*8^0となるので、8進数だと17となります…

AOJ0207 Block

問題リンク Block 解法 幅優先探索です。 スタートの色と同じ色のみを辿ってゴール地点にたどり着けるかを調べます。 ただし、与えられるスタート地点にブロックが無い場合があるようなので注意です。 ソース

AOJ0206 Next Trip

問題リンク Next Trip 解法 やるだけ問題だと思います。 ソース

AOJ0205 Rock, Paper, Scissors

問題リンク Rock, Paper, Scissors 解法 やるだけ問題です。 出ている手の種類が1か3なら必ずあいことなります。 2種類なら、どちらの手を出しているかで勝ち負けが判定できます。 ソース

AOJ0204 UFO Shooting Down Operation

問題リンク UFO Shooting Down Operation 解法 幾何+シミュレーション問題です。 まず、準備立てとして次のものを求めておきます。 1. ufoの位置(x, y) 2. 1分毎のufoの移動量ベクトル 3. 原点からの距離 自分のソースの場合、1はufo[i][0]とufo[i][1]にそれ…

AOJ0203 A New Plan of Aizu Ski Resort

問題リンク A New Plan of Aizu Ski Resort 解法 典型的なDP問題です。 dp[i][j]: マス(i, j)に来た時の滑り方のパターン数 とすることで解けます。dp[i][j]はdp[i+1][j-1], dp[i+1][j], dp[i+1][j+1]の3つの値が求まっていれば求められるので、iが大きい方(…

AOJ0202 At Boss's Expense

問題リンク At Boss's Expense 解法 N個の料理の値段の和で表せる かつ 素数 かつ 予算以下という数字を見つければいいです。 予算の大きさの配列を用意し、値段xを料理の値段の和で表せるならばxのところにtrueを入れていくことで解けます。 ソース

AOJ0201 Wrought Gold Master

問題リンク Wrought Gold Master 解法 アイテムiを手に入れるための最小費用は「(材料リストにあれば)値段」「各レシピの最小入手費用の和」のうち安い方です。これをメモ化再帰などで求めます。Runtime Errorが起きやすい理由として、作ろうとしているアイ…

AOJ0200 Traveling Alone: One-way Ticket of Youth

問題リンク Traveling Alone: One-way Ticket of Youth 解法 時間について、金額について、2点間の最小コストが欲しいので、それぞれについてワーシャル・フロイド法を適用します。 ソース