MOI 2020
MOI2020 比賽規則
比賽輪次
本年度比賽分為兩輪:
-
第一輪為線上試,統一時間舉行,分別在參賽者所屬學校內舉行,由各校負責老師進行監考。第一輪決定金、銀、銅獎項,參賽總人數的 50%(且獲得分數者)可以獲金、銀、銅獎,金、銀、銅獎的人數比例約為 1:2:3。第一輪成績同時決定參加第二輪的資格,進行第二輪的條件如下:
- 第一輪排在前十五名者可以參加第二輪。
- 排名在前五名的女同學可以參加第二顁。
- 不足 2 名同學參加第二輪的學校按照第一輪排名補足至 2 人。。
-
第二輪為集中考試,目的主要是選出參加 NOI2020 的人選,兩輪單獨計分,代表隊的人選只以第二輪得分計算。
比賽形式及計分方法
-
每輪比賽均為 4 小時,題目數目為 6 至 10 題。每題單獨計分,正確答案的滿分為 100 但最高可能獲得分為 110(見下說明)。以所有題目的總實際得分進行最後排名。
-
每題計分方法:每題先以正確答案得分來排名,相同正確答案得分者則以先提交答案者排名。然後按以下方法計分: 設學生 A某題排名為 R,得分為 M,則其實得分為:
SCORE = M * (1 + 0.1 / 2 ^ (R - 1))
-
第一輪在 6 月 14 日舉行,而第二輪在 6 月 21 日舉行。
新輸入題型
本年比賽開將會有一個測試點包含多個測試數據的輸入形式,具體見以下例子。
例題:
請編寫一程式計算出數列總和。
輸入
輸入包含多組數據,每組數據的格式均如下:
第一行包含一個整數 N,代表數列中有多少個整數,第二行則有 N 個整數。
最後一組數據只有一個 0 ,其後沒有任何數據。
輸出
對應於每組輸人數据,請輸出該數列的總和。每個輸出須單獨佔一行。每個數列的總和都均不大於 10^9.
輸入範例
3
1 2 4
2
3 7
0
輸出範例
7
10
參考程式:
#include <iostream>
using namespace std;
int main() {
int N;
while (1) {
cin >> N;
if (N == 0) break;
int sum = 0, v;
for (int i = 0; i < N; i++) {
cin >> v;
sum += v;
}
cout << sum << endl;
}
return 0;
}
注意事項:
- 以上例子中,輸入檔案中每個數據均為獨立數據,因此程式中所用到的變量應重新初始化。
- 最後一個數據 0 通常只是用以標示數據的結尾,一般是沒有任何對輸出的。
- 程式必須通過測試數據檔內的每一組數據才可取得該測試檔的分數。
- 雖然這裹我們提及測試數據“檔”,但程式內輸人輸出的部份並不需要到任何有關檔案翰入輸出的程式
- 一般情況下,題目內是不會給出每個輸人檔案內的測試數據(組)的數目。