文系プログラマーのプログラミング備忘録

Java、競プロ、数学などについて書いてます

2019-03-06から1日間の記事一覧

経路 [AtCoder Beginner Contest 034 C]

atcoder.jp 答えは ・(H+W-2)! / (H-1)! * (W-1)! % 1000000007 です。 部分点50点は上記の式を計算するだけ、部分点100点はDPをすることで得られますが、 満点101点は W,H 満点を得るためにはフェルマーの小定理(?)、逆元(?)などを求める必要があるみ…

Javaで階乗を高速に求めるメソッドを作る

階乗を求めるアルゴリズムというと、再帰関数を用いたものが広く知られています。 static long factorial (int i) { if (i==1) {return 1;} else {return i*factorial(i-1);} } for文を用いても同様の計算ができますが、これらの 1*2*3*4......N と順番に乗…

(部分点解法)壁抜け [AtCoder Beginner Contest 020 C]

atcoder.jp 前回の記事にあるプログラムを使って解いています。 jpliterature.hatenablog.com 入力・出力部分 static int h, w; static Point s, g; static char[][] map; static int x; static ArrayList<Integer> list = new ArrayList<>(); void solve () { //入力</integer>…

深さ優先探索でマス目上の全ての経路を列挙する

「マス目上の経路」とは、例えば以下のようなものです。 引用:道順の場合の数を求めるテクニック | 高校数学の美しい物語 画像ではマス目の縁に沿って辿っていますが、今回考えるのはマス目からマス目へと辿る経路です。 画像のマス目では、左下の角から右…