olpheの競プロ帖

競プロ問やアルゴリズム等の考察します

JOI過去問

IOI列車で行こう(13本選2)

N両の電車とM量の電車が与えられる。それぞれはI列車とO列車のみで構成される。 順にどちらかの先頭の車両を取っていき、IOIOIOIOIのようにIとOか交互に並び、且つIが端にあるように並べたとき、最長の長さを求める問題。 なお、電車はあまらせてもよいし、…

JOI国の買い物事情(11本選3)

N個の町、M本の道、K個のショッピングモールがある。 ショッピングモールは町の中にある。 町及び道の中で一番近いショッピングモールまでの距離が最大の値を求める問題。 まず、dijkstraで町までの距離を求め、各辺について辺上で一番遠い点を求める。 計算…

ペンキの色(08本選5)

H*Wの看板にN個のテープが貼ってある。色を塗らなければならないスペースが何個あるかを求める問題。 座標圧縮をして、queueで何個あるか探す。 計算量は(N^3)だが定数が小さい。 難易度は7程度に感じられた。 http://judge.u-aizu.ac.jp/onlinejudge/revie…

ぴょんぴょん川渡り(08本選4)

N行に石があり、それぞれの行にある石の数と、位置と滑りやすさが決まっている。 向こう岸まで跳んで行った時の最小の危険度を求める問題。 なお、一行飛びジャンプはM回までできる。 dp[i行目までで][j回までの一行飛びジャンプを使い][i行目のk個目の石]に…

最軽量のモビール(07本選5)

N個の棒があり、そのそれぞれにひもがつながっている。一番上の棒をつるしているひもを除いては、ひもの下には棒かおもりがある。 角棒について、自分をつるしているひもより左の長さ、右の長さ、左につるしている棒の番号、右につるしている棒の番号(おもり…

タクシー(14予選5)

N個の町、K本の道がある。各町にはタクシー会社が存在し、それぞれ決められた数までの道を移動できる。また、料金も決まっている。 1~Nに移動するために必要なコストの最小値を求める問題。 基本的にはdijkstraでよいが、各頂点を訪れるごとに移動できる場…

魚の生息範囲(13予選5)

N種類の魚がいて、それぞれの生息範囲が直方体で与えられる。 同時にK種類の魚が存在しうる領域の体積を求めよという問題。 まず、座標の範囲が0~1000000と非常に大きいにもかかわらず、魚の種類は最大でも50なので無駄っぽい。なのでそれぞれについてソート…

ビンゴ(09予選6)

N*Nのビンゴに1~Mまでの数字を入れる。和をSにしないといけないという条件の下で、何通りのカードが作れるかな?という問題。 dp[i個の数字で][jを作る]通り数のDPを組む。大きいものから見ることで1次減らせる。 計算量はO(NMS) 難易度は7程度に感じられた。…

最悪の記者(07本選4)

Nチームがリーグ戦を行った。M個の勝敗の情報が与えられたとき、順位表のうちの一つを出力せよ。という問題。 なお、引き分けの試合はなく、同順位のチームもなく、順位が上のチームが下のチームに負けなかったことが保証されている。 勝ったチームから負け…

夜店(12本選3)

N個の屋台をT時間の間に遊びたい。また、時刻Sの時に花火もみたい。 一つの屋台で遊ぶ時の楽しさと時間が与えられるので、楽しさを最大化しようという問題。なお、屋台は番号の若い順にしか回れず、一つの屋台では一度しか遊べない。 N個目までの屋台につい…

スタンプラリー2(16本選2)

N個の店があり、それぞれJかOかIが決まっている。3店を選んでJOIを作る。 なお、3店は番号の小さい順に選ぶ必要がある。 ここで、任意の場所に任意の文字の店を一つ追加して、JOIを作る通り数を最大化したいという問題。 まず、最初の段階でJOIの通り数を数…

オレンジの出荷(16本選1)

N個のオレンジがあり、それぞれ大きさが決まっている。一個の箱には最大でM個オレンジを詰められ、箱に詰める際のコストはK+num*(MAX-MIN)で求められる。 (numは箱に詰めたオレンジの数。MAX,MINは箱に詰めたオレンジの大きさの最大値、最小値) コストを最小…

ケーキの切り分け2(15本選2)

N個に切られたホールケーキがあり、それぞれの大きさが与えられる。 先攻はまず好きなピースを取り、それ以降後攻は空間が隣にあるケーキの内で大きいほうのケーキを、先攻はそのようなケーキの内好きなほうを取る。 先攻の大きさを最大化しようという問題。…

IOI饅頭(14本選2)

N個の饅頭があり、それぞれ価格が決まっている。 M個の箱があり、それぞれ何個饅頭を入れられるか、購入の際のコストが決まっている。 利益を最大化しようという問題。 まず、饅頭をi個売る時は、高いもの時からi個売るのがいいので、ソートして累積和を求め…

電飾(14本選1)

N個の電球が並んでいて、それらは点いているか消えている。 一回だけ、連続する電球の点灯状態を反転させて、交互に並べたい。 最大で何個できるかな?という問題。 まず、連続して同じ状態の電球が並んでいるところをリストアップしておき、それらの中で隣…

JOI紋章(13本選1)

H*Wの旗があって各マスにJかOかIの文字が書かれている。 2*2の欲しい文字の並びと、白い布(最大で最大で一度一つの文字を上書きできる)が与えられるので、最大何回理想の並びが登場するかな?という問題。 まず、最初の段階で何個理想の並びが存在するか調べ…

古本屋(11本選2)

N冊の本の中からK冊本を売る。 各本には値段とジャンルが決まっていて、同じジャンルの本を多く売るとボーナスが入るので、利益の最大値を求めようという問題。 まず、任意のジャンルに関して、高いものから売ればより高くなることはすぐにわかるのでソート…

つらら(10本選3)

N本のつららがあり、左右に自分より長いつららがなければ伸びていく。 長さがLを越えると折れてしまうので、全部折れるまでにどれだけかかるかな?という問題。 毎秒シミュレートしては間に合わないので他の方法を取る必要がある。 まず、最初の段階で伸びる…

ピザ(09本選2)

円上にN個のピザ屋とM個の家があり、各家からの最も近いピザ屋までの距離の総和を求める問題。 愚直にやるとO(NM)で想定解法ではなさそうなので(10^9なので今は通るかもしれない) 二分探索をして各家がどのピザ屋とどのピザ屋の間にあるか調べる。 二分探索…

ダーツ(08本選3)

N種類の得点が得られるダーツ板に4本ダーツを投げてM点以下という制約のもと最大で何点得られるかな?という問題。 投げないという選択肢が与えられていることに注意しつつ、半分全列挙を使いO(N^2)で解ける。 難易度は6程度であるように感じられた。 http:/…

一年生(11予選4)

N-1個の数字が与えられ、それらを足したり引いたりしてMを作る方法は何通りあるかな?という問題。 dp[i個目までの数字で][j]を作る通り数でdpを書けばよい。 単純なDPなので難易度は4程度に感じられた。 http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?…

カード並べ(10予選4)

N枚のカードからK枚カードを並べて何種類の数字ができるかな?という問題。 なお、0は存在しないのでsetに突っ込むだけである。 考察部分だけだと3程度かと思うが、set(map+queue)を適正3の人が知っているか、という部分もあると思うので難易度は4にしておく…

薄氷渡り(09予選4)

N*Mの一度だけ通れるマスと通れないマスでこうせいされたマップを動き回る。 一番多く動けるときはどれだけうごけるかな?といった問題。 移動の仕方が20万通りを越えないと保証されているので、解法自体は困らないと思うが、関数に配列を渡すのに苦労した。…

連鎖(09予選3)

N匹のキャラクターが縦一列に並んでいる。 (1<=N<=10000) 同じ色のキャラクターが4匹以上隣接すると彼らは消滅する。 また、初期段階で消滅する条件を満たしていることはない。 一度だけ、任意のキャラクターの色を好きなように変えることができるのだが、一…

船旅(08予選6)

N個の島とK個のクエリが与えられる。 (1<=N<=100,1<=K<=5000) クエリの種類は2種類で、 ①島Bから島Cへ移動する際の最短コストを求める。 ②島Bと島Cの間にコストDの双方向に移動できる辺を置く また、開始時点では辺は存在しない 辺の追加はO(1)、最短コスト…

星座探し(08予選4)

最大で200個(M個)の星からなる星座の位置と、最大で1000個(N個)の夜空の星の位置が与えられる。 星座の情報からどれだけ平行移動すれば実際の夜空で星座を見つけられるかな、という問題。(必ず一通りの解があることが保証されている) 愚直にやろうとすると10…

品質検査(07予選5)

a個の電源、b個のモーター、c個のケーブルのうち、一つずつ部品を選び、接続してちゃんと動くかな?という情報が与えられるので、 ちゃんと動く場合はすべての部品が正常であることが分かる。 また、動かない場合は少なくとも一つの部品が正常でないことが分…