Weitere ähnliche Inhalte
Ähnlich wie 直前合宿 講義スライド (20)
直前合宿 講義スライド
- 8. Most Typical DP Optimization
一番多いパターンはこんな感じの
dp[i][j]=max{dp[i-1][k]+都合のよい関数}
ただし、dp[i][j]を決めることになったkよりもdp[i]
[j+1]を決めることになったkが小さくはならない
→変な順でdpテーブルを埋めると計算量が落ちる
- 9. Telephone Wire (PKU 3612)
dp[i][j]=min{dp[i-1][k]+C×abs(j-k)+(h[i]-j)2
}
(j≧h[i]のみ埋める)
A[i][j]:= (dp[i][j]を決定付けるkの値)
とすると A[i][j] ≦ A[i][j+1] が容易に想像つく
あと、凸性も持っている(…≧≧≧≧≦≦≦≦…み
たいな感じ)
- 10. Telephone Wire (PKU 3612)
どういう方法で高速化できるか
・dp[i][j]を、dp[i-1][k]+C×abs(j-k)+(h[i]-j)2
を
kが小さい順に計算
・途中で一つ前より大きくなってしまったらやめ
る
・大きくなる前のkからdp[i][j+1]を計算
・以下繰り返し
- 35. 0 0 1 1
1 2 2
2 2
3
i
j
各j-iの値ごとに
O(N)かかるので
合計O(N2
)
- 36. Buffed Buffet (ICPC WF2014 B)
N種類の食べ物があり、1個あたり重さwi
で、k個目
を食べたとき満足度はvi
-(k-1)Δvi
上昇する。
食べたものの重さの合計が0~wになるときのそれ
ぞれの満足度の最大値を求めよ。
N≦250, W≦10,000
0≦vi
, Δvi
- 37. Buffed Buffet (ICPC WF2014 B)
dp[i][j]:=i種類目まで合計重さjのときの最大値
普通に計算するとO(NW2
)で遅い
今まで見たとおり疑ってかかるべき点は
A[i][j]≦A[i][j+1]が成り立つかどうか
- 39. Buffed Buffet (ICPC WF2014 B)
このとき計算すると青よ
り緑がより最適になるの
で矛盾する
(スライドにしにくい)
よって
A[i][j]≦A[i][j+1]
s t u v
- 44. Wombats (IOI 2013)
・(r0
,i)→(r1
,k), (r1
,k)→(r2
,j)の最短経路長がそれ
ぞれ分かっているので合成して(r0
,i)→(r2
,j) の最
短経路長全部をO(N2
)で求める必要がある
・下から上に逆走できないのでこのアイデアが出る
http://www.ioi-
jp.
org/ioi/2013/7
-11/zoo6.jpg
http://www.ioi-
jp.
org/ioi/2013/7-
11/zoo5.jpg