C♯の勉強

C♯4.0 で TopCoder の過去問を解きます。

2013-10-06から1日間の記事一覧

TopCoder SRM593: MayTheBestPetWin

\( A(S) = \sum_{i \in S} A[i] \) \( A(T) = \sum_{i \in T} A[i] \) \( B(S) = \sum_{i \in S} B[i] \) \( B(T) = \sum_{i \in T} B[i] \)とすると、求めるべき答えは、\( \max(|A(S) - B(T)| , |A(T) - B(S)|) \)になる。\( A(S) + A(T) = \sum A (\equiv…

TopCoder SRM593: HexagonalBoard

最悪なケースでも 1 2 3 1 2 3 ... 3 1 2 3 1 2 ... 2 3 1 2 3 1 ... を置くことで、色の個数は高々3に抑えられる。したがって2色で交互に深さ優先探索で色分けしていって、失敗したら3を返すようにする。 public class HexagonalBoard { static public i…

TopCoder SRM593: WolfDelaymaster

最初の 'w' の個数を数えて、それに対応する wolf 文字列でちゃんと始まっているかチェックしていけばよい。 "w..w"+"o..o"+"l..l"+"f..f"の文字列生成はSelectManyで。 public class WolfDelaymaster { public string check(string str) { if (str == "") r…

TopCoder SRM593: RaiseThisBarn

切り分け方を全通り試す。 public class RaiseThisBarn { public int calc(string str) { int ans = 0; for (int i = 1; i < str.Length; i++) { string left = str.Substring(0, i); string right = str.Substring(i); if (left.Replace(".", "") == right.…