前言
USACO 訓練項目配備了一個自動評分系統,用于批改你的作業題目。你可以直接在題目頁面提交你的程序;系統會對程序進行編譯和評分,幾秒鐘內就能將結果反饋給你。
支持的語言有 C、C++(含 C++11 和 C++14)、PASCAL、Python2、Python3 以及 Java。這個系統使用 GNU GCC 編譯套件來編譯 C/C++ 程序,Free Pascal 系統編譯 Pascal 程序,Java 則使用 Oracle 最新版本的編譯器。
評分系統所用的編譯器是之前 IOI(國際信息學奧林匹克)所使用的版本。
這些新版編譯器使用 32 位整型;而 Borland 編譯器使用的是 16 位整型。切記不要因為這點犯錯!
你需要通過網頁提交你的程序,在題目描述頁面底部的“Submit a file:”框內輸入你的源代碼文件名即可。
程序提交時需要簡單的頭部注釋:包含你的 ID(即你的 USACO 登錄名)、程序名稱(每個題目中都會給出),以及所用語言。下面是一些示例,供參考。
每個訓練題目都有輸入和輸出文件。輸入文件命名為 probname.in
(例如題目名為ride
,輸入文件名就是 ride.in
),輸出文件必須寫入 probname.out
(即 ride.out
)。
第一個挑戰
最簡單的編程挑戰名為 test
,需要你從輸入文件 test.in
中讀取一行的兩個小整數,并將它們的和寫入輸出文件 test.out
。
下面是 C 語言的簡單解法。注意通常需要用 exit(0); 正常退出程序。
/*
ID: your_id_here
LANG: C
TASK: test
*/
#include <stdio.h>
#include <stdlib.h>
void main () {FILE *fin = fopen ("test.in", "r");FILE *fout = fopen ("test.out", "w");int a, b;fscanf (fin, "%d %d", &a, &b); /* 讀取兩個整數 */fprintf (fout, "%d\n", a+b);exit (0);
}
下面是 C++ 語言的簡單解法。注意通常用 return 0; 正常退出。
/* 請使用斜杠星號注釋風格,否則系統無法識別你的身份信息 */
/*
ID: your_id_here
TASK: test
LANG: C++ // 也可以寫成 C++11 或 C++14
*/
#include <iostream>
#include <fstream>using namespace std;int main() {ifstream fin("test.in");ofstream fout("test.out");int a, b;fin >> a >> b;fout << a + b << endl;return 0;
}
限制條件
- 運行時間限制 1 秒(具體題目可能不同),測試機為現代處理器,時間換算為 700MHz Pentium III。
- 數據大小約 16MB。
- 棧大小約 1MB。
- 程序必須正常退出,返回狀態碼 0。
- 輸出必須是完整的一行,帶換行符。
- 只能使用指定的輸入、輸出文件及輔助文件。
- 其他常識性規則。
規則
- 不允許作弊。
- 不能直接打印答案,必須通過程序計算。
- 不允許訪問系統中的其他文件或使用非法手段。
- 不允許破壞隱私。
- 發現異常請立即報告(郵箱:rob.kolstad@gmail.com)。
- 盡情享受編程樂趣,爭取參加 IOI 及其他頂級競賽!