差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
最新のリビジョン両方とも次のリビジョン
programming_algorithm:contest_history:atcoder:2019:0209_yahoo-procon2019-qual [2019/02/11] – [問題] ikatakosprogramming_algorithm:contest_history:atcoder:2019:0209_yahoo-procon2019-qual [2019/02/11] ikatakos
行 248: 行 248:
 そして制限を考慮に入れると、$i$ 人目までの赤と青のボールの数を数えておき、 そして制限を考慮に入れると、$i$ 人目までの赤と青のボールの数を数えておき、
  
-  * 青いボールを置けないなら左端の↓の遷移が無理 +  * 青いボールの数が足りないなら左端の↓の遷移が無理 
-  * 赤いボールを置けないなら右端の↘の遷移が無理+  * 赤いボールの数が足りないなら右端の↘の遷移が無理
  
 なので、その遷移を除く。端以外はそれぞれ青、赤のボールがまだ余っているので、端のみ考慮すればよい。 なので、その遷移を除く。端以外はそれぞれ青、赤のボールがまだ余っているので、端のみ考慮すればよい。
行 264: 行 264:
 こうして$DP[N][j]$ まで計算すると、「前半の $N$ 個までに赤を $j$ 個置いた場合の並び順の数」が各 $j$ についてわかる。 こうして$DP[N][j]$ まで計算すると、「前半の $N$ 個までに赤を $j$ 個置いた場合の並び順の数」が各 $j$ についてわかる。
  
-すると、後半に赤をいくつ、青をいくつ並べればよいかが、$j$ より計算できる。赤の総数を $r$ とすると、残りは$r-j$ となる。+すると、後半に赤をいくつ、青をいくつ並べればよいかが、$j$ より計算できる。赤の総数を $r$ とすると、$r-j$ となる。
  
-後半の並べ方は特に制限は無いので、${}_NC_{r-j}$ となる。+後半の並べ方は特に制限は無いので、Combinationを用いて ${}_NC_{r-j}$ となる。
  
 前半と合わせて、$\displaystyle \sum_{j=0}^N(DP[N][j] \times {}_NC_{r-j})$ が答えとなる。 前半と合わせて、$\displaystyle \sum_{j=0}^N(DP[N][j] \times {}_NC_{r-j})$ が答えとなる。
行 294: 行 294:
  
 これまで、NumPyを使うとWAになることがあったが、ひょっとしてこれだったか…… これまで、NumPyを使うとWAになることがあったが、ひょっとしてこれだったか……
- 
-まぁ、いずれにしろスライスへの代入は、NumPy配列全体への操作と比較して遅くなりがちなので、どうしても一部にしか代入したくない場合を除き、使わない方がよい。 
  
 <sxh python> <sxh python>
programming_algorithm/contest_history/atcoder/2019/0209_yahoo-procon2019-qual.txt · 最終更新: 2019/02/11 by ikatakos
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0