問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
この問題集では動的計画法を用いて解くことができる問題を扱います。
特に、この問題集のすべての問題は DP テーブルを二次元 (dp[*][*] の形) で考えることができます。
この問題集を通して動的計画法をマスターしましょう。
入力は以下のフォーマットで与えられます。
H W M
p_1 q_1
p_2 q_2
...
p_M q_M
マス (1,1) からマス (H,W) に移動するとき、通ったマスに含まれるチェックポイントの個数の最大値を求めてください。
最後は改行し、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ H,W ≦ 500
・1 ≦ M ≦ min(2 × 10^4, H * W - 1)
・1 ≦ p_k ≦ H
・1 ≦ q_k ≦ W
・(p_k, q_k) ≠ (1, 1)
・(p_k, q_k) ≠ (p_l, q_l) (k ≠ l)
3 3 3
1 2
3 1
2 3
2
10 5 10
6 2
10 5
3 4
3 1
10 4
5 1
6 3
7 2
9 1
1 3
6
100 100 20
90 85
95 14
78 7
85 49
46 42
36 16
53 44
37 27
73 89
31 92
98 2
66 65
61 29
3 5
53 15
31 88
98 1
4 31
75 24
24 24
7