##master-page:NoteTemplate #format wiki #language ja '''もくじ''' <> = TopCoderの導入 = [[Seiya%20Takahara/TopCoder導入解説(登録~SRM参加~プラグイン導入) | しめじたんの記事]]を読めば良い。 登録は20分位かかった。遅いほうかも。 ログインできたら左上のO(n)のアイコンをくりっく、ポップアップのlaunch Arena的なアイコンをくりっく。 なにやら(ContestAppletProd.jnlp)ダウンロードされるので、クイック起動に登録しておく。 = C++の導入 = 僕はc++コンパイラすらなかったのでそこからスタート。<
> cygwinをインストールすればOK[[http://i-love-windows.blog.so-net.ne.jp/2010-02-01]]<
> ってISerならUbuntuですよね~ C++については、下の記事を参照<
> [[y3eadgbe/【C%2B%2B】STL%20for%20TopCoder | 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) {{attachment:enecre/topcoder.jpg}} *ただしテストケースが通っててもSystem Testで落とされると0点なので万全を期す必要がある *Arenaの方でcompile,続いてsubmit = 小技など = [[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 | しめじたんの記事]]にある、プラグインを導入している前提です<
> プラグインでテンプレートを自動挿入する。<
> 参考テンプレート {{{#!highlight cpp #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; inline int toInt(string s) {int v; istringstream sin(s);sin>>v;return v;} typedef vector vi; typedef vector vvi; typedef vector vs; typedef long long ll; typedef unsigned long long ull; #define EXIST(v,e) (find((v).begin(), (v).end(), (e)) != (v).end()) #define SORT(v) (sort((v).begin(), (v).end())) #define RSORT(v) (sort((v).rbegin(), (v).rend())) #define PB push_back #define SZ(a) (int((a).size())) #define FOR(i,a,b) for(int i=(a);i<(b);++i) #define REP(i,n) FOR(i,0,n) #define TAG(i,v) REP(i,SZ(v)) #define trace(x) cerr << #x << " = " << (x) << endl #define tracev(x) cerr << #x << " = "; TAG(i, x) { cerr << x[i] << ","; } cerr << endl const int inf = 1 << 27; class $CLASSNAME$ { public: $RC$ $METHODNAME$( $METHODPARMS$ ) { $RC$ res; return res; } $TESTCODE$ }; $BEGINCUT$ int main(void) { $CLASSNAME$ ___test; ___test.run_test( -1 ); } $ENDCUT$ }}} 参考シェルスクリプト(コンパイル&実行)<
> 以下の内容のファイル(仮にtmakeとする)をchmod 774して、パスの通ってるところに置くと、tmake一発でよくなる。ただしディレクトリに.cppが2つ以上あってはいけないので、解いたEasyを別のディレクトリに逃がす必要がある。<
> {{{ g++ -O2 -Wall *.cpp -o a ./a }}} printデバッグ時、テストケース5がでか過ぎて出力おおすぎ<
> -> テストコードのverify_caseなどと書いてあるところに、return; を挟む。<
> ---- [[Categoryノート]]