Hatena::Grouptopcoder

niha SRM

 | 

2010-04-20

ばびょーん 22:42

復活です。SRM 468 参加できませんでしたが、終わった後にリハビリで少しだけやりました。

ていうかやばいはてな記法が分からない。やばい。

SRM 468 DIV2 です。

  • 問題読む
  • よくわからない
  • うーん
  • そうだ入出力をまず見るんだった(違います)
  • わかった!!
  • C++ ってどうやって書くんだっけなー
  • まあ普通に書こう
  • (久しぶり過ぎて感覚狂うなあ)
  • (とりあえ K が 0 と N の時だけ書こう。いらない気もする)
  • diff 取って部分ソートしてやればいいよなあ…)
  • (partial_sort のソートする数って第何引数だったっけ…)
  • (あー 0 より小さいのはダメだな…delete_if も)
  • かけたー
  • コンパイル→エラー
  • あーー comp の引数がコンテナ型のままだあほ
  • コンパイル→エラー
  • あーー pred の引数がコンテナ型のままだあほ
  • コンパイル→おめでとう!
  • テスト→テスト結果の見方が分からないなう
  • うーん…?
  • (5 分ほどあくせくする)
  • よくわからないので submit

ということでできたコード。168 点でした。私はゴミです。

bool comp(pair<int, int> l, pair<int, int> r){
  return l.second - r.second;
}

bool pred(pair<int, int> v){
  return v.second < 1;
}

class RoadOrFlightEasy {
public:
  int minTime(int N, vector <int> roadTime, vector <int> flightTime, int K) {
    if (K == 0) return accumulate(ALL(roadTime), 0);
    if (K == N) return accumulate(ALL(flightTime), 0);

    vector< pair</*index*/int, int> > vs;
    for (int i = 0; i < N; i++) {
      vs.push_back(make_pair(i, flightTime[i] - roadTime[i]));
    }

    partial_sort(ALL(vs), vs.begin() + K, comp);
    remove_if(ALL(vs), pred);

    vector<int> vals(N, 0);
    FOREACH(i, vs) {
      int index = i->first;
      vals[index] = flightTime[index];
    }

    for (int i = 0; i < N; i++) {
      if (vals[i] == 0) {
        vals[i] = roadTime[i];
      }
    }

    return accumulate(ALL(vals), 0);
  }
};

"return l.second - r.second;" はちょっとひどいって思うな…

ていうか "vals[i->first] = i->second" じゃね…

頭が痛いんです!!!

vals いらんな roadTime を書き換えていけばいい…

俺はダメだ!!!

あれこれは全然ダメだぞ…

"vals[i->first] = i->second" じゃないよ!あと partial_sort した後いらない部分 erase してない。

K == N もだめ…

ぎゃぼー

ゲスト



トラックバック - http://topcoder.g.hatena.ne.jp/niha/20100420
 |