takapt0226's diary

競技プログラミングのことを書きます

2013-01-16から1日間の記事一覧

SRM 566 Div2 Hard FencingPenguinsEasy

解法 あるフェンスが利用可能である条件は、フェンスを張ったときに左右のどちらか一方のみにペンギンが存在するような場合である。(ここでは、反時計回りにフェンスを張っていくので、左側に全てのペンギンがいる場合に利用可能とする。)利用可能であるフ…

SRM 566 Div2 Medium PenguinPals

解法 区間dp dp[i][j] = [i, j]の最大マッチング ソースコード int n; string c; int dp[55][55]; int dfs(int l, int r) { if (l >= r) return 0; else if (dp[l][r] != -1) return dp[l][r]; int res = 0; for (int i = l + 1; i <= r; ++i) if (c[l] == c…

SRM 566 Div2 Easy PenguinTiles

解法 右下にある場合0 一番下の行 or 一番右の列にある場合1 それ以外の場合は1回の操作で↑の状態にできるので2 ソースコード int PenguinTiles::minMoves(vector <string> tiles) { int h = tiles.size(), w = tiles[0].size(); if (tiles[h - 1][w - 1] == '.') re</string>…