会津大学のサイトにはプログラマ向け練習問題が掲載されており、高校生から大学2年生くらいまで向け問題が掲載されています。 私はsinapusu2002という名前で登録。 2011/7/2時点で333問解きました。 さすがにこれだけ解くと残り問題は苦手問題か難問ばかり。 とりあえず私でも解けそうな問題がないか、残っている問題の挑戦状態を記録することにしました。 一般のプログラマには簡単な問題だと思いますが、3流高卒独学の私には難しい問題ばかり。 全く手も足も出ていません。 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2200 郵便局員の集配問題。 船さえなければ単なるワーシャルフロイド法なのだが、船の存在が問題の難易度を引き上げている。 解法思いつかず。 最低限確実に言えることは、船を利用する場合、スタート地点から船まで最短経路を取る、船は一度の移動で2度以上使わない、船から降りたら目的地まで最短経路しか使わない。 ということですね。 問題点は目標点AからB、BからCへ向かう時、A~Bを最短で結ぶ経路を取りそこに海路が含まれる時、船の係留所はA~Bの最短コースの途中でいいのか? それとも、Cを考慮に入れた少し遠回りなA~Bへのルートを選び、船の運用をCへ行く時のことも考えた場所に止めるべきか? という問題が生まれる。 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2201 磁石で宝石を吸いつける問題。 条件を満たす一次方程式の係数の範囲の共通集合?なのだろうか? http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2202 運河のシミュレート問題。 丁寧にシミュレートしていけばいいのだろうが、シミュレートの方式が精密に組み上がっているか自信が持てず挑戦できない。 多分、船が前の船に追いつく、船が運河の水門で足止めを喰らう、等のイベントをsetに入れて、イベントが起こるたびに無効化されるイベント消す? それともターン制で処理する? あるタイムから次のイベントが起こるタイムを求め一番すぐにおこるイベントを求め、その時刻までターンを進め船の状態を動かしていく?