Hatena::Grouptopcoder

TopCoderの問題を解く

解いた問題の一覧表

2009-09-07

GardenHose

| 12:51

問題文, SRM 197

庭の外側からホースを使って水を撒くとき、撒けないプラントは何個か。1回落とされたのは、ホースの長さが庭の長さより長い場合の処理を実装するのを忘れたため。解いた後にEditorialを見たら、撒けた場合にはcontinueし、ループの最後までいってしまったらカウンタを増やすというやり方が紹介されていた。その方法の方がバグを作りにくいな。

173.11/250 (1 failed)

class GardenHose {
public:
    int countDead(int n, int rowDist, int colDist, int hoseDist) {
        if (rowDist*n <= hoseDist || colDist*n <= hoseDist)
            return 0;
        vector<vector<int> > garden(n, vector<int>(n, 'x'));
        for (int i = 0; i < n; i++) {
            for (int j = 0; (j+1)*rowDist <= hoseDist; j++)
                garden[j][i] = garden[n-j-1][i] = 'o';
            for (int j = 0; (j+1)*colDist <= hoseDist; j++)
                garden[i][j] = garden[i][n-j-1] = 'o';
        }
        int result = 0;
        for (int i = 0; i < n; i++)
            result += count(garden[i].begin(), garden[i].end(), 'x');
        return result;
    }
};

ゲスト



トラックバック - http://topcoder.g.hatena.ne.jp/caligue/20090907