1と2のリビジョン間の差分
2011-07-13 23:41:08時点のリビジョン1
サイズ: 5144
編集者: fujima
コメント:
2011-07-13 23:47:08時点のリビジョン2
サイズ: 5030
編集者: fujima
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 9: 行 9:
[[Seiya%20Takahara/TopCoder%E5%B0%8E%E5%85%A5%E8%A7%A3%E8%AA%AC%EF%BC%88%E7%99%BB%E9%8C%B2%EF%BD%9ESRM%E5%8F%82%E5%8A%A0%EF%BD%9E%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E5%B0%8E%E5%85%A5%EF%BC%89 | しめじたんの記事]]を読めば良い。 [[Seiya%20Takahara/TopCoder導入解説(登録~SRM参加~プラグイン導入) | しめじたんの記事]]を読めば良い。

もくじ

TopCoderの導入

しめじたんの記事を読めば良い。 登録は20分位かかった。遅いほうかも。

ログインできたら左上のO(n)のアイコンをくりっく、ポップアップのlaunch Arena的なアイコンをくりっく。

なにやら(ContestAppletProd.jnlp)ダウンロードされるので、クイック起動に登録しておく。

C++の導入

僕はc++コンパイラすらなかったのでそこからスタート。
cygwinをインストールすればOKhttp://i-love-windows.blog.so-net.ne.jp/2010-02-01
ってISerならUbuntuですよね~

C++については、下の記事を参照
y3eadgbeによるSTLの記事

C++でハマったこと

  • c++のコードなのにgccでコンパイルしようとしてハマった。(正しくはg++)
  • エラーが大量すぎてやばい。よくさがすと行数を見つけられるので探す。

SRM実際の流れ

  • SRM開始3時間前から5分前までにregisterする。(Arenaの右上の方のActive Contest→SRM第〇〇回→register)
  • 開始時間になったら部屋に入る。(同じくActive Contest→SRM第〇〇回→Enter)
  • はいってちょっと待つと開始です!的なアラートが出るので問題を開いて解く。
  • 75分解くと終了。休憩5分。
  • 次がChallenge Phase(撃墜されタイム)。基本何も出来ない。15分。
    • 一応Summary→得点の数字のところを右クリで人のソースを見れる。撃墜ケースを思いついたら、失敗する入力を投げる
    • 色は黄色がC++,緑がJava,青がC#
  • System Test。遅い。じっとPCの前で待ってはいけない。遊ぶまたは寝る。

問題を解く流れ

  • 問題文を開いて右上で言語を選ぶと、プラグインが勝手にファイルを作ってくれる。
  • 解く。
  • ローカルでコンパイル→実行(画像はまだ解いてないのでとったので全部FAILED)

enecre/topcoder.jpg

  • ただしテストケースが通っててもSystem Testで落とされると0点なので万全を期す必要がある
  • Arenaの方でcompile,続いてsubmit

小技など

しめじたんの記事にある、プラグインを導入している前提です
プラグインでテンプレートを自動挿入する。

参考テンプレート

   1 #include <string>
   2 
   3 #include <algorithm>
   4 
   5 #include <cfloat>
   6 
   7 #include <climits>
   8 
   9 #include <cmath>
  10 
  11 #include <complex>
  12 
  13 #include <cstdio>
  14 
  15 #include <cstdlib>
  16 
  17 #include <cstring>
  18 
  19 #include <functional>
  20 
  21 #include <iostream>
  22 
  23 #include <map>
  24 
  25 #include <memory>
  26 
  27 #include <queue>
  28 
  29 #include <set>
  30 
  31 #include <sstream>
  32 
  33 #include <stack>
  34 
  35 #include <utility>
  36 
  37 #include <vector>
  38 
  39 
  40 
  41 
  42 
  43 using namespace std;
  44 
  45 
  46 
  47 inline int toInt(string s) {int v; istringstream sin(s);sin>>v;return v;}
  48 
  49 
  50 
  51 typedef vector<int> vi;
  52 
  53 typedef vector<vi> vvi;
  54 
  55 typedef vector<string> vs;
  56 
  57 
  58 
  59 typedef long long ll;
  60 
  61 typedef unsigned long long ull;
  62 
  63 
  64 
  65 
  66 
  67 #define EXIST(v,e) (find((v).begin(), (v).end(), (e)) != (v).end())
  68 
  69 #define SORT(v) (sort((v).begin(), (v).end()))
  70 
  71 #define RSORT(v) (sort((v).rbegin(), (v).rend()))
  72 
  73 #define PB push_back
  74 
  75 #define SZ(a) (int((a).size()))
  76 
  77 #define FOR(i,a,b) for(int i=(a);i<(b);++i)
  78 
  79 #define REP(i,n) FOR(i,0,n)
  80 
  81 #define TAG(i,v) REP(i,SZ(v))
  82 
  83 #define trace(x)  cerr << #x << " = " << (x) << endl
  84 
  85 #define tracev(x) cerr << #x << " = "; TAG(i, x) { cerr << x[i] << ","; } cerr << endl
  86 
  87 
  88 
  89 const int inf = 1 << 27;
  90 
  91 
  92 
  93 class $CLASSNAME$ {
  94 
  95 public:
  96 
  97         $RC$ $METHODNAME$( $METHODPARMS$ ) {
  98 
  99                 $RC$ res;
 100 
 101                 
 102 
 103                 return res;
 104 
 105         }
 106 
 107 
 108 
 109         $TESTCODE$
 110 
 111 };
 112 
 113 
 114 
 115 
 116 
 117 $BEGINCUT$
 118 
 119 int main(void) {
 120 
 121         $CLASSNAME$ ___test;
 122 
 123         ___test.run_test( -1 ); 
 124 
 125 }
 126 
 127 $ENDCUT$

参考シェルスクリプト(コンパイル&実行)
以下の内容のファイル(仮にtmakeとする)をchmod 774して、パスの通ってるところに置くと、tmake一発でよくなる。ただしディレクトリに.cppが2つ以上あってはいけないので、解いたEasyを別のディレクトリに逃がす必要がある。

g++ -O2 -Wall *.cpp -o a
./a

printデバッグ時、テストケース5がでか過ぎて出力おおすぎ

  • -> テストコードのverify_caseなどと書いてあるところに、return; を挟む。


Categoryノート

fujima/topcoderメモ (最終更新日時 2011-07-13 23:47:08 更新者 fujima)