Hatena::Grouptopcoder

TopCoderの問題を解く

解いた問題の一覧表

2009-10-26

OldestOne

| 05:33

問題文, SRM 177

最年長の人の名前を答える。

380.52/500

class OldestOne {
public:
    string oldest(vector <string> data) {
        string oldestName;
        int oldestAge = -1;
        for (int i = 0; i < data.size(); i++) {
            for (int j = 1; j < data[i].length(); j++) {
                if (isdigit(data[i][j])) {
                    int age;
                    sscanf(data[i].substr(j).c_str(), "%d", &age);
                    if (oldestAge < age) {
                        oldestAge = age;
                        oldestName = data[i].substr(0, j);
                    }
                    break;
                }
            }
        }
        string result;
        for (int i = 0; i < oldestName.length(); i++)
            if (isalpha(oldestName[i])) {
                result = oldestName.substr(i);
                break;
            }
        for (int i = result.length()-1; i >= 0; i--)
            if (isalpha(result[i])) {
                result = result.substr(0, i+1);
                break;
            }
        return result;
    }
};

2009-09-05

TickTick

| 13:04

問題文, SRM 177

How To Dissect a TopCoder Problem Statement -- Algorithm Tutorialsから。

何種類のイベントの組み合わせができるか。問題の意味がわからなかった。Editorialを読んでようやく理解できた。

122.36/300 (cheated)

class TickTick {
public:
    int count(vector <string> events) {
        vector<double> e; 
        e.push_back(0.0);
        for (int i = 0; i < events.size(); i++) 
            e.push_back(atof(events[i].c_str()));
        set<string> ret;
        for (int i = 0; i < e.size(); i++) {
            double tick = e[i] + 5e-8;
            double prev = DBL_MIN;
            string seq;
            for (int j = 0; j < e.size(); j++) {
                double tickIndex = floor(e[j]-tick);
                if (tickIndex == prev) seq += "S";
                else seq += "D";
                prev = tickIndex;
            }
            ret.insert(seq);
        }
        return ret.size();
    }
};

2009-09-01

Stairs

| 13:15

問題文, SRM 177

与えられた条件の階段は何種類作れるか。問題の意味を理解するのに時間がかかった。内側のループは必要ない、ということに他の方のコードを見て気がついた。

177.45/250

class Stairs {
public:
    int designs(int maxHeight, int minWidth, int totalHeight, int totalWidth) {
        int designs = 0;
        for (int h = maxHeight; h >= 1; h--) {
            if (totalHeight%h == 0) {
                int parts = totalHeight/h - 1;
                if (parts == 0) continue;
                for (int w = minWidth; ; w++) {
                    int width = w * parts;
                    if (width > totalWidth) break;
                    if (width == totalWidth) 
                        designs++;
                }

            }
        }
        return designs;
    }
};

MitchellMitchell2011/07/11 00:05Big help, big help. And superlative news of crouse.

veiutvcwcveiutvcwc2011/07/11 02:29TlCswI <a href="http://vjnggvexbwuu.com/">vjnggvexbwuu</a>

zoksriviopzoksriviop2011/07/11 21:51epdS5v , [url=http://gqqjyfaqwssc.com/]gqqjyfaqwssc[/url], [link=http://mbceaafjqxom.com/]mbceaafjqxom[/link], http://qzkaecclvamc.com/

ntetzpntetzp2011/07/13 18:23bYD1yS <a href="http://bgyraruehckt.com/">bgyraruehckt</a>

mxixglmxixgl2011/07/14 00:35GtzmkZ , [url=http://mxgzmwjlggpm.com/]mxgzmwjlggpm[/url], [link=http://xraideylozrg.com/]xraideylozrg[/link], http://jcutzvphyqwn.com/