AOJ埋め9

某イベント2日目だったらしいですね.某イベントことばっか書いてるな最近.
今回は2001年のセット.全完できるセットだと思う.

Starship Hakodate-maru

最初に全部求めておけばいい.

e-market

実装するだけだけど結構面倒くさい.

Fishnet

n小さいのでやるだけ.直線の交点と4角形の面積求められればそれでいい.

77377

DPでやった.
まず,入力値を,たとえば press なら 77377 のように変換した形で保持しておく.そこで, vector dp[pos] := sequenceのpos文字目〜最後を見て解釈できる文字列の集合として順次計算していく.
…なんだけど,AOJのジャッジに問題がある(Special Judgeでないといけないはずなのに通常Judgeになっている)のか,WAしか出ない!!
しょうがないので Live Archive でsubmitしたらAC.なんじゃそら.
とりあえずAOJにジャッジ方式変えろとの趣旨のメールを送って放置.

Beehives

回転パターン(回転6通り×鏡像2通り)を全部試す.
set >に突っ込んで座標を正規化して一致しているか見る.

Young, Poor and Busy

4種類くらいのDPでやった.
dp[0][id][t] := Hakodateから出発して時刻t以内に頂点idに着くのにかかる最小コスト
dp[1][id][t] := Tokyoから出発して時刻t以内に頂点idに着くのにかかる最小コスト
dp[2][id][t] := 頂点idから時刻t以降に出発してHakodateに着くのにかかる最小コスト
dp[3][id][t] := 頂点idから時刻t以降に出発してTokyoに着くのにかかる最小コスト
みたいな感じ.計算量は大してかからないっぽい.

Nim

適当にDP.
dp[S][n] := 石の個数S,開始するプレイヤーnから始めて,自分が勝つなら1,相手が勝つなら0 としてごにょごにょ.

Super Star

a[i]を入力座標,wを3次元ベクトルとして
f(w)=max_{0<=i<N} |a[i]-w|
に対し,min f(w) を求める問題.
fは下に凸な関数である.1変数関数なら3分探索するだけだけど,3変数関数なのでどうするのかよく分からない.
x座標で3分探索 → y座標で3分探索 → z座標で3分探索 → x座標で… を繰り返せばどうにかなるかなーとか思ったのだけどそれだとどうも駄目らしい.うーむ.
小手先でx,y,z方向に動かすようにするようにしたけどWA.
分からないのでiakasTさんの記事を参考に山登り法を書いてAC.
山登り法において,近傍の解を求める際にそれが最適じゃなくて微妙に駄目な解の場合どういう挙動になるのかよくわかってないのだけど,あれでいいもんなのか.あんまりまだよく分かってない.
解じゃないところで詰まってしまったり,十分解に近づいていないのに終了することが無ければいいのだろうか.