解いた問題

ラベル UVa の投稿を表示しています。 すべての投稿を表示
ラベル UVa の投稿を表示しています。 すべての投稿を表示

6/21/2012

UVa11206

UVa11206

普通に塗って試せばいい。

グラフは連結だし、頂点の数も充分に小さいっぽい。

6/19/2012

UVa11229

UVa11229

盤面の状態は 3^9 = 19683 程度。メモ化する。
引き分けの場合は後手番の勝利に含めてしまっていい。

memo[ 盤面の状態 ] = 先手の勝率
先手は勝率を最大化し、後手は勝率を最小化する。

6/13/2012

UVa548

UVa548

ポストオーダーの最後に登場する頂点でインオーダーを分割する。
このコードより簡単な実装or解法がある気がする。

UVa10128

UVa10128

dp [ 誰を使った ] [ これまでで最も高い身長 ] [ 前から見て何人見えるか ]

最も身長の高い人より後ろに並んでいる人は当然見えない。
つまり、その人の前と後ろで分けて考えることが出来る。

6/12/2012

UVa 12410

UVa12410

memo [ 何桁目まで作ったか ] [ 使った 1 の数 ] [ idealとの違い ] [ mod 3 ] [ mod 7 ] [ smaller or not ]

4/24/2012

UVa1172

UVa1172

DPかメモ化する。
memo[片方の岸の街][他方の岸の街]

たぶん同じ名前を持つ街が存在する。
街の名前を map のキーにするようなことは避けたほうがいい。

4/20/2012

UVa1228

UVa1228

メモ化する。
memo[ 使った 0 の数 ][ 使った 1 の数 ]

0 と 1 はそれぞれ先頭から使う。つまり、入れ替わりが発生するのは同じ数同士ではない。
与えられた遅延の値を見ていけば答えは出せる。

4/18/2012

UVa1223

UVa1223

LCPを見るだけ。
接尾辞配列の構築みたいなことをする。

4/12/2012

4/05/2012

UVa1238

UVa1238

DPする。
dp[どこまで見た][閉じていない開き括弧の数][これまでの和]
+ に括弧を付けても意味がないので、- のところに括弧を付ける。
- ( ... - ( ... - ( ) ... ) ... - ( ) ... ) みたいになるとして、
閉じられていない括弧の数が偶数か奇数かどうかで、今見ている数の符号が反転するかどうか分かる。

4/02/2012

UVa1255

UVa1255
ある時間からある時間までにどれくらいスタックに入れられるかメモ化orDP
memo[begin][end] = max{ 1 + memo[A][B] + memo[B][end] }