Skip to content
Narrow screen resolution Wide screen resolution Auto adjust screen size Increase font size Decrease font size Default font size default color grey color
         
 | 
VNOI - Olympic tin học Việt Nam

Điểm tin VOJ

Số thành viên:6040
Số bài tập:1001
Số bài nộp:722923
Bài nộp hôm nay:0

Top 10 thành viên xuất sắc

HạngThành viênĐiểm
1mr_invincible587.9
2white_cobra418.6
3hieult403.4
4phaleq384.0
5vodanh9x368.2
6con_nha_ngheo352.0
7flash_mt350.2
8darksabers349.8
9yenthanh132345.3
10rockman9x_94343.1
Diễn đàn arrow Thư viện arrow Bài viết arrow Khác arrow Các công cụ Topcoder
Các công cụ Topcoder In E-mail
(4 votes)
Người viết: Ngô Minh Đức   
24/03/2008

Các công cụ Topcoder

 Topcoder plugins là những phần mềm hỗ trợ viết cho Topcoder Arena.

Danh sách các plugins:

http://www.topcoder.com/tc?module=Static&d1=applet&d2=plugins

Editor: KawigiEdit
Dùng KawigiEdit sẽ có những ưu điểm:

-         Tích hợp Compile và Run Tests ngay trong Arena

-         Tạo Code Template

Tài liệu, bao gồm hướng dẫn cài đặt:

http://www.topcoder.com/contest/classes/KawigiEdit/KawigiEdit.html

Download:

http://www.topcoder.com/contest/classes/KawigiEdit/KawigiEdit.jar

 

Bạn có thể download KawigiEdit đã sửa đổi mã test code (để debug tốt hơn) tại địa chỉ:

http://oiresources.googlepages.com/KawigiEdit2.jar

 

Cài đặt trình biên dịch cho C++:

Trình biên dịch Topcoder sử dụng là GCC.

Để có GCC, bạn có thể download DevCpp, một ide mã nguồn mở cho GCC tại địa chỉ:

http://www.bloodshed.net/dev/devcpp.html

 

Khi cài đặt DevCpp, gcc.exe sẽ nằm trong thư mục Dev-Cpp\bin

Chọn My Computer – Properties – Advanced Tab – Environment Variables, thêm thư mục chứa gcc.exe vào biến Path (ở đây là “D:\Dev-Cpp\Bin”)

 

Bây giờ bạn đã có thể Run Tests với KawigiEdit bằng các thiết lập mặc định của Editor này. Trong trường hợp bạn muốn dùng Compiler khác (như Digital Mars) bạn cần thay đổi thiết lập của Kawigi Edit bằng cách mở Kawigi Configuration – Languages Tab, sau đó thay đổi compile command trong C++.

 

Compile command mặc định cho GCC là:

g++ $PROBLEM$.cpp

Ở đây $PROBLEM$ là một tag thay thế cho tên problem.

 

Tạo Code Template

Mở Kawigi Configuration – Template Editor

Để mở Default Template cho C++, chọn Open Default – CPP.ket

Thay đổi Template cho riêng bạn, chẳng hạn thêm các macro bạn quen dùng.

Chọn Save – Yes – CPP.ket

 

Debug

Để debug những class stl dễ dàng hơn, bạn có thể viết một số thủ tục hỗ trợ. Dưới đây là cách tôi sử dụng:

Tạo file mang tên “debug” trong thư mục Include của GCC, ở đây là “D:\Dev-Cpp\Include”

Nội dung:

#include <string>

#include <iostream>

#include <vector>

#include <map>

#include <set>

using namespace std;

 

#define tr(c,i) for(typeof (c).begin() i = (c).begin(); i != (c).end(); i++)

 

int debug_text_width=0;

 

void tw(const int& v)

{

     debug_text_width=v;

 }

 

void ps(const string& s)

{

     cout << s << endl;

 }

 

template <class T>

void pv(const vector <T> &v)

{

     string s;

     cout << "[";

     for (int i=0; i<v.size(); i++)

     {

         cout << s;

         cout.width(debug_text_width);

         cout << v[i];

         s=", ";

     }

     cout << "]" << endl;

 }

 

template <class T>

void pv(const vector <T> &v, int l, int r)

{

     string s;

     cout << "[";

     for (int i=l; i<=r; i++)

     {

         cout << s;

         cout.width(debug_text_width);

         cout << v[i];

         s=", ";

     }

     cout << "]" << endl;

 }

 

 template <class T>

void pvln(const vector <T> &v)

{

     for (int i=0; i<v.size(); i++)

         cout << v[i] << endl;

 }

 

template <class T>

void pvln(const vector <T> &v, int l, int r)

{

     for (int i=l; i<=r; i++)

         cout << v[i] << endl;

 }

 

template <class A, class B>

void pmap(const map <A, B>& a)

{

     string s;

     cout << "[";

     tr(a, it)

     {

         cout << s;

         cout.width(debug_text_width);

         cout << it->first << ":" <<it->second;

         s=", ";

     }

     cout << "]" << endl;

 }

 

template <class T>

void pset(const set <T>& a)

{

     string s;

     cout << "[";

     tr(a, it)

     {

         cout << s;

         cout.width(debug_text_width);

         cout << *it;

         s=", ";

     }

     cout << "]" << endl;

 }

 

template <class T>

void pt(const vector < vector <T> >& t)

{

    for (int i=0; i<t.size(); i++)

        pv(t[i]);

}

 

template <class T>

void pt(const vector < vector <T> >& t, int i1, int j1, int i2, int j2)

{

    for (int i=i1; i<=i2; i++)

        pv(t[i], j1, j2);

 }

 

Các thủ tục hỗ trợ:

-         pv(a): in nội dung một vector ra stdout

-         pv(a, l, r): in nội dung vector từ phần tử l đến r

-         pvln(a): tương tự pv, nhưng in mỗi phần tử trên một dòng

-         pvln(a, l, r): tương tự pv, nhưng in mỗi phần tử trên một dòng

-         ps(s): in string

-         pt(t): in một table (table có dạng vector < vector <T> >)

-         pt(t, i1, j1, i2, j2): in table trong giới hạn (i1, j1, i2, j2)

-         pmap(a): in map

-         pset(a): in set

 

Để gọi được các thủ tục trên, bạn thêm #include <debug> vào code template.

Khi submit bài làm, bạn sửa thành // #include <debug>

 

IDE: Visual C++ 2005

Bên cạnh KawigiEdit và GCC, để giải các bài toán phức tạp, bạn cần phải thực hiện việc debug và do đó cần phải có một IDE thực sự. VC++ 2005 là một IDE rất mạnh mà bạn sẽ tận dụng được chức năng code completion và hệ thống debug. VC++ 2005 có thể debug được cả những class STL như vector, map, set,… mà không có IDE nào có thể làm được. Trong khi đó, nên nhớ rằng bạn sẽ làm việc chủ yếu với những class STL này ở Topcoder!

 
< Trước   Tiếp >