2015-08-26から1日間の記事一覧

TopCoder SRM 514 Div1 Medium: MagicalGirlLevelTwoDivOne

解法 左上のN*Mの長方形内の遇奇を考えれば良い。 i行目の和が奇数になるパターンを組み合わせて、i行目までの各列の和が最終的に奇数になるようにビットDPすれば良い。 コード import java.util.Arrays; public class MagicalGirlLevelTwoDivOne { private …

TopCoder SRM 666 Div1 Easy: WalkOverATree

コード public class WalkOverATree { public int maxNodesVisited(int[] parent, int L) { int N = parent.length + 1; int[] dist = new int[N]; int max = 0; for (int i = 1; i < N; i++) { dist[i] = dist[parent[i - 1]] + 1; max = Math.max(max, dis…

TopCoder SRM 513 Div1 Medium: PerfectMemory

解法 動的計画法(メモ化再帰)するだけ。(独力で解けたのでメッチャ嬉しい) コード public class PerfectMemory { private double[][] dp; public double getExpectation(int N, int M) { int C = N * M; dp = new double[C + 1][C + 1]; double ans = dp…