2015-10-01から1ヶ月間の記事一覧

CODE FESTIVAL 2015 予選B D: マスと駒と色塗り/Squares, Pieces and Coloring

問題 code-festival-2015-qualb.contest.atcoder.jp 解法 塗り終わった区間の[始点, 終点]を保持しおく。塗るときに合併される区間がある場合は合併していけば、保持する情報も少なくて済む。これのイメージで解いた↓kenkoooo.hatenablog.com コード import …

TopCoder SRM 672 Div1 Easy: Procrastination

解法 n-200からn+200までの数の約数を全列挙して殴る。 コード import java.util.Arrays; import java.util.HashSet; public class Procrastination { public long findFinalAssignee(long n) { HashSet<Long> divisers = new HashSet<>(); long min = Math.max(2,</long>…

TopCoder SRM 546 Div1 Medium: FavouriteDigits

解法 上の桁から貪欲に埋めていく。できるだけ小さい数字を入れてみて、残りの数字が条件を満たす最大のものだった時にN以上になるなら大丈夫。 コード public class FavouriteDigits { public long findNext(long lN, int dSmall, int cSmall, int dBig, in…

TopCoder SRM 545 Div1 Medium: Spacetsk

コード public class Spacetsk { private final int MOD = (int) 1e9 + 7; public int countsets(int L, int H, int K) { if (K == 1) { return ((L + 1) * (H + 1)) % MOD; } // パスカルの三角形 int N = Math.max(Math.max(L + 2, H + 2), K + 2); int[][…

TopCoder SRM 671 Div1 Easy: BearCries

解法 まだ顔として使われていない;の数と;_の数を保持したDPをすれば良い。 コード public class BearCries { private final int MOD = (int) 1e9 + 7; public int count(String string) { int N = string.length(); char[] m = string.toCharArray(); // i…

TopCoder SRM 671 Div1 Medium: BearDarts

解法 Med、a/b=c/dという変形は考えたのにそれを使って単に舐めるだけでシンプルに解く方法に至らなかったのは酷い・・・それにしてもみんな早く解きすぎじゃないですかね— SKY/sky58 (@skyaozora) 2015, 10月 14 コード import java.util.HashMap; public c…

TopCoder SRM 670 Div1 Medium: Treestrat

解法 ワーシャルフロイトで2点間の距離を出しておく。Aの各コマa_iについて、以下の操作によってゲームを終わらせるのに必要なターン数を出す。 必要なターン数movesを固定する。 a_i からmoves以内で行けて、かつ、Bの全ての駒がmoves以内で行けない頂点を…

TopCoder SRM 670 Div1 Easy: Bracket107

解法 1文字取り出して別のところに挿入するとLCSが最大の文字列が生成される。数は大して大きくないので、全探索でいける。 コード import java.util.HashSet; public class Bracket107 { public int yetanother(String s) { int N = s.length(); HashSet<String> an</string>…

TopCoder SRM 564 Div1 Medium: AlternateColors2

問題 TopCoder Statistics - Problem Statement コード public class AlternateColors2 { public long countWays(int n, int k) { long ans = 0; for (int red = 1; red <= k; red++) { int notred = k - red;// k番目の赤ボールが破壊される前に破壊される…

TopCoder SRM 555 Div1 Medium: XorBoard

問題 TopCoder Statistics - Problem Statement コード public class XorBoard { private final int MOD = 555555555; public int count(int H, int W, int Rcount, int Ccount, int S) { // パスカルの三角形 int N = Math.max(W, H) * 2; int[][] nCm = ne…

TopCoder SRM 574 Div1 Medium: PolygonTraversal

問題 TopCoder Statistics - Problem Statement 解法 bitDP。intersectするかどうかはfromとtoの間(内回りと外回り)にある点について訪問済みかどうか考えるだけで良い。 コード import java.util.Arrays; public class PolygonTraversal { private long[]…

Codeforces Round #323 Div2 D: Once Again...

問題 codeforces.com 解法 増加列に含まれる値の種類は多くてN種類なので、T>Nならば、最も多い種類の点の数を (T-N) 回足せば良い。 コード import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Scanner…

Codeforces Round #323 Div2 C: GCD Table

問題 codeforces.com 解法 テーブル上の既に明らかになっているGCDを取り除いた時に最大の数は、必ず元の配列に含まれているはずである。 コード import java.util.ArrayList; import java.util.Map; import java.util.Scanner; import java.util.TreeMap; p…

TopCoder SRM 563 Div1 Medium: SpellCards

問題 TopCoder Statistics - Problem Statement 解法 配列が環状になっている区間のDP。「first枚目からcount枚の連続した区間の中からmustLeave枚取り除かなければならない場合の最高点」を考える。 コード Petrのコードを参考にした。 import java.util.Ar…

TopCoder SRM 544 Div1 Medium: FlipGame

問題 TopCoder Statistics - Problem Statement 解法 貪欲にやれば良い。 コード public class FlipGame { public int minOperations(String[] strings) { int N = strings.length; char[][] board = new char[N][]; for (int i = 0; i < N; i++) { board[i]…

TopCoder SRM 551 Div1 Medium: ColorfulWolves

問題 TopCoder Statistics - Problem Statement 解法 100問マラソンはプライドを捨てて AC/Open が高い簡単な問題から解いていくことにした。from->to の移動が可能な時、実際に移動するためには i i の経路を全て潰すことになるので、そのコストを辺 from->…