2013-01-01から1年間の記事一覧

AOJ1116 Jigsaw Puzzles for Computers

AOJ

解法1.まだ使っていないパズルの選択 2.回転方向の選択 3.上下左右で配置に適当なパズルかどうか判定 4.配置可能なら更にパズルをおく(再帰) 5.全てのパズルを配置できたら、答えの場合の数が1増加する 6.再帰関数の戻り値を利用して、全ての…

AOJ1189 Prime Caves

AOJ

初めに素数洞穴のマップを作る。 渦状にマップを作るのはバグりやすいので、まずはdx, dyを使わずに渦を1方向ずつforループを回して作ると良い。これでかなり楽に書ける。後はDPすればよい。自分は初めの地点から下3方向の洞穴に向かってBFSしていきDP配列…

AOJ1145 The Genome Database of All Space Life

AOJ

AOJ1163 Cards

AOJ

二部グラフの最大マッチング問題なのでフローを作り、最大流量を調べる。青と赤のカードのペアで gcd > 1 が取れるものに辺が引ける。

AOJ1162 Discrete Speed

最短時間であるが、単一始点最短路問題である。 隣接リストを用いて拡張ダイクストラをする。状態として 「前の位置」「現在位置」「到着時の速度」「経過時間」 を持つとよい。これが分かれば後は書き下すだけ。priority_queue に push する条件として制限…

Tutorials からはじめる Boost.Spirit.Qi

この記事は Aizu Advent Calendar 2013 7日目 の記事を想定して作成されています。 Let's Boost.Spirit! Boost.Spirit とは構文解析用のライブラリで、Spirit.Lex, Spirit.Qi, Spirit. Karma の3種類があります。 それぞれ字句解析器、字句+構文解析器、パ…

Advent Calendar に書くこと

Boost.Spirit Tutorials のXMLとかの詳しい解読内容。

メモ

OpenGL ES "3D Tutorials的な" "ちょっと古い記事"

12月 進捗ログ

月間目標 Boost::Spirit使ってゲームの構文解析部を動かす マルチエージェントシステムについて調べる。正月明けまでに半分実装を済ます。 AOJ solve数 350 未完成記事の完成

Dinic法

Range Minimum Query

--

Ford-Fulkerson法

強連結成分分解

有向グラフ上の部分集合Sの任意の頂点u, vについて,uからvに到達可能であるときSは強連結である。Sにどの頂点を加えても強連結にできないとき,Sは強連結成分である。有向グラフGについて全ての強連結成分をつぶして一つにすると、グラフはDAGになる。編集中

トポロジカルソート

TOPOLOGICAL-SORT(G) 各頂点 v の終了時刻 v.f を計算するために DFS(G) を呼び出す ある頂点の探索が終了するたびに、この頂点を連結リストの先頭に挿入する return 頂点の連結リスト

Dijkstraのアルゴリズム

入力:有向グラフG, 非負の重み関数 c: E(G) → R_+ および始点 s ∈ V(G) 出力:sからすべての点 v ∈ V(G) への最短パスとその距離、より正確には、 すべての点 v ∈ V(G) に対する p(v) と l(v) ただし、l(v) は最短s-p(v)-パスと 辺(p(v), v)からなる最短s-v…

--

参考: 線形代数入門 EMANの物理学

k-最短路問題

s-t-パスの中でk番目に短いものを求める問題をk-最短路問題という。 Priority Queueを使ったダイクストラで実装するのが基本的な解法となる。 参考 Spaghetti Souce

AOJ 1126 The Secret Number

AOJ

解いてる途中のメモ MAPの中で数字のものだけを使って文字列結合をしていく。dpはstringの配列(vector) でもつとよい。 dp[i+1][j+1] = max(dp[i][j+1]+M[i+1][j+1], max(dp[i+1][j]+M[i+1][j+1])) Mが数値か文字かの判定が必要。数値なら、数が大きくなるよ…

AOJ 1132 Circle and Points

AOJ

任意の二点を選んでその点を通る円を作る。円は2個ある。 そのような全ての円それぞれが包含できる点の数を数えて最大値を求める。N 円の中心点の求め方 選んだ2点a, bの作る直線Aの生む垂直二等分線と、2点のうち一方の点と中心を結ぶ長さ1の線分から、三…

AOJ1131 Unit Fraction Partition

AOJ

途中 メモ p, q, a, n が与えられる。 分数の値が等しいというのを確かめる際に浮動小数点に直してはいけない。 p/q, nume/deno の2つの値が等しい p*deno == q*nume であることを利用する また、問題文で指定されるような枝刈りを行うこと

AOJ 0224 Bicycle Diet

AOJ

途中 訪れたケーキの集合と現在地点を状態として持って拡張ダイクストラを実行する。 L, C, H, Dの種類のノードがあるが、全て一つのノードに詰める。その時、添字が例えば H, D, L, C の順になるように詰めて、予め種類ごとの場所を決めてやるのが上手い。

AOJ0531 Paint Color

AOJ

蟻本のそれで座標圧縮する。テープの区間を塗りつぶしたらDFSorBFSすればよい。座標圧縮する問題ではスタックオーバーフローの危険のないBFSの方が安全。まだ座標圧縮自体が掴みきれてない。

AOJ1145 The Genome Database of All Space Life

AOJ

AOJ1163 Cards

AOJ

二部グラフの最大マッチング問題なのでフローを作り、最大流量を調べる。青と赤のカードのペアで gcd > 1 が取れるものに辺が引ける。

AOJ 1162 Discrete Speed

隣接リストを用いて拡張ダイクストラをする。 やりかた知ってれば書き下すだけだった。状態として 「前の位置」「現在位置」「到着時の速度」「経過時間」 を持つとよい。priority_queue に push する条件として制限速度を与えてやることに注意。

AOJ 1189 Prime Caves

AOJ

未解決 初めに洞穴のマップを作る。エラトステネスの篩を掛けて、マップのidと対応を見ると素数洞穴がわかる。 洞穴のマップがバグりそうならdx, dyを使わずに渦を1方向ずつforループを回して作ってみれば良い。これでまずバグらない。後はDPなのだが、私は…

AOJ1163 Cards

AOJ

二部グラフの最大マッチング問題なのでフローを作り、最大流量を調べる。青と赤のカードのペアで gcd > 1 が取れるものに辺が引ける。

AOJ1145 The Genome Database of All Space Life

AOJ

解きたいメモ

AOJ

記事作りかけのやつと1144 Curling 2.0