差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン | 次のリビジョン両方とも次のリビジョン | ||
programming_algorithm:contest_history:atcoder:2018:0825_arc101 [2020/03/16] – [解法] ikatakos | programming_algorithm:contest_history:atcoder:2018:0825_arc101 [2020/03/17] – [解法] ikatakos | ||
---|---|---|---|
行 315: | 行 315: | ||
これを踏まえて、以下のDPを考える。 | これを踏まえて、以下のDPを考える。 | ||
- | * $DP[i][j]= (i-1,j)$ までの経路数 | + | * $DP[i][j]= (i-1,j)$ まで移動したときの、下を先に通過したロボットと左を先に通過したロボットの組み合わせ数 |
* $DP[0][0] = 1$ | * $DP[0][0] = 1$ | ||
これは何を示すかというと、 | これは何を示すかというと、 | ||
- | + | 「左までの距離が $i$ のロボットに関して、右までの距離が $j$ 以下のロボットを右、$j$ | |
- | * 左出口までの距離が | + | $i-1$ 以前のロボットについては通った経路によって左も右もあり得るが、それらを踏まえた出口の組の個数を数え上げる。 |
- | * 座標 | + | |
- | | + | |
ただし $j$ については、必要無いのに無駄に右に進むことはせず、 | ただし $j$ については、必要無いのに無駄に右に進むことはせず、 | ||
行 342: | 行 340: | ||
$i=2$ のロボットのうち、$(2, | $i=2$ のロボットのうち、$(2, | ||
- | 「(1, | + | 「(1, |
右 4| | 右 4| | ||
行 474: | 行 472: | ||
そのため、Pythonなら逐一割るより、MODを全く無視して計算して、最後に1回だけ割った方が高速となった。 | そのため、Pythonなら逐一割るより、MODを全く無視して計算して、最後に1回だけ割った方が高速となった。 | ||
- | 割り算遅いっすね。いや、どちらかというと多倍長が(表面上は)何の工夫もせずに書ける割に高速なのか。 | + | 割り算遅いっすね。いや、どちらかというと多倍長が(表面上は何の工夫もせずに書ける割に)高速なのか。 |