比賽介紹及小說背景
【這不是第一章,這是比賽介紹及小說背景】
##比賽介紹
國際大學生程序設計競賽(International Collegiate Programming Contest,ICPC)由 ICPC基金會(ICPC Foundation)主辦,始於1970年,是全球歷史最悠久、規模最大且最負盛名、最具影響力的大學生計算機競賽。由於該競賽最初由國際計算機學會(Association for Computing Machinery,ACM)發起,時至今日仍有許多人習慣叫它 ACM競賽。該競賽被譽為計算機界的奧林匹克,世界上最聰明人的比賽。
##比賽模式
三人組隊,在 5小時內共用 1台電腦,完成十餘道算法題。
每道題會描述一套現實或虛構場景的數據處理需求,並給出輸入數據的格式、範圍,以及需求的輸出的格式,數據不限於「數字」,可以有符號、字符,一切計算機可以保存的內容。
選手可以通過 C、C++、Java等語言完成數據處理的代碼,提交到一個全自動的評測系統,該系統會在後台編譯運行選手的代碼,把隱藏的輸入數據「餵」給運行的程序,獲取程序的輸出,進而將程序輸出與答案比對,作為判斷程序是否正確的依據。
在小說故事發生的時候,已經有「特殊評測」模式來處理答案不唯一的情況,即用一個額外的程序來判斷選手程序的輸出是否正確。
提交代碼的次數不限,直到正確解出為止。
出於訓練或交流需求,也會有不組隊的個人賽。
##比賽規則
紙質開卷:可以攜帶任何紙質資料,不限內容與數量。禁止使用任何電子設備,如電子詞典、U盤等,正規的線下賽禁止上網。不過當然會有一些訓練屬性的線上比賽,如果無監考的話,也就沒什麼限制了。
排名方式:以通過的題數、罰時進行排名,完成題數多的排名在前,題數相同情況下,罰時少的排名在前,罰時也相同的概率較小,當題數與罰時都相同時,排名依據多年以來有不少變化,細節不再贅述。
罰時計算方法:
某道題解出的時刻距離比賽開始的時長,計入總罰時。比如比賽第 20分鐘解出一道題,罰時就是 20;第40分鐘又解出一道題,總罰時就是 20+40=60.
沒有正確解出的題,不計算罰時。
當一道題正確通過之前有過若干次錯誤,每次錯誤罰時 20分鐘,可以把「分鐘」理解為一個「懲罰分數」。比如第 50分鐘做出一道題,在這之前錯了 3次,罰時就是 50+20*3=110.
##時代背景
小說發生在北京奧運到上海世博會這幾年前後,是 ACM-ICPC在國內剛開始大熱的「田園時代」,以國內頭部高校參賽為主,很多學校甚至拿不到現場賽名額,由於比賽難度極大,也很少有學校有能夠指導這項賽事的教練,大多參賽選手都是憑著熱愛為之努力,非常純粹。
小說故事結束後,截至本書寫作的2025年,ACM賽事也一直變化與發展著,後來有了國內教練群體對 ICPC亞洲區組委的不滿,發起了國人自己的「中國大學生程序設計競賽(CCPC)」;ACM不再贊助 ICPC,ICPC獨立成立基金會,比賽官方名稱不再帶有「ACM」;贊助商從IBM變為華為;每場亞洲區域賽國內賽區從當初的一百餘隊發展到三百餘隊;小白書出了訓練指南(大白書),出了第二版變成了紫色(紫書)等等。這些後續的發展並沒有涵蓋在本小說內容里,這裡提及也是避免新時代的 ACMer對小說內容困惑。
如果本小說能得到大家喜歡,也許在未來有精力的話會再寫一些新時代 XCPC的故事。
##附:代碼評測結果
閱讀小說時,如有需求,在此查閱
常見的有如下結果:
- Accepted(AC):正確通過,是唯一表示題目通過的結果
- Pending:程序已錄入資料庫,正在等待評測。
- Pending Rejudge:程序正在等待重測。
- Compiling:程序正在被評測機編譯。
- Presentation Error(PE):程序輸出的答案邏輯正確,但格式沒有與評測數據的輸出完全一致。
- Wrong Answer(WA):最常見的錯誤,即程序輸出的結果不正確。
- Time Limit Exceeded(TLE):程序運行時間超出了題目限制。
- Memory Limit Exceeded(MLE):程序運行需要的內存超出了題目限制。
- Output Limit Exceeded(OLE):程序輸出遠遠超出了評測數據答案的長度,可以理解為 Wrong Answer,只是提示得更具體一些。
- Runtime Error(RE):程序運行錯誤,包括不限於:段錯誤、浮點異常、嘗試讀寫禁止的內存區域、調用了禁止的函數等。
- Compile Error(CE):評測機無法成功編譯程序,即對評測機而言,提交的代碼存在語法錯誤,早年一些平台會將該結果計入罰時,後來普遍的規則是不計入罰時。
隨著時代的發展,也產生了更多的評測結果,這些細節不影響本小說的閱讀。
##比賽介紹
國際大學生程序設計競賽(International Collegiate Programming Contest,ICPC)由 ICPC基金會(ICPC Foundation)主辦,始於1970年,是全球歷史最悠久、規模最大且最負盛名、最具影響力的大學生計算機競賽。由於該競賽最初由國際計算機學會(Association for Computing Machinery,ACM)發起,時至今日仍有許多人習慣叫它 ACM競賽。該競賽被譽為計算機界的奧林匹克,世界上最聰明人的比賽。
##比賽模式
三人組隊,在 5小時內共用 1台電腦,完成十餘道算法題。
每道題會描述一套現實或虛構場景的數據處理需求,並給出輸入數據的格式、範圍,以及需求的輸出的格式,數據不限於「數字」,可以有符號、字符,一切計算機可以保存的內容。
選手可以通過 C、C++、Java等語言完成數據處理的代碼,提交到一個全自動的評測系統,該系統會在後台編譯運行選手的代碼,把隱藏的輸入數據「餵」給運行的程序,獲取程序的輸出,進而將程序輸出與答案比對,作為判斷程序是否正確的依據。
在小說故事發生的時候,已經有「特殊評測」模式來處理答案不唯一的情況,即用一個額外的程序來判斷選手程序的輸出是否正確。
提交代碼的次數不限,直到正確解出為止。
出於訓練或交流需求,也會有不組隊的個人賽。
##比賽規則
紙質開卷:可以攜帶任何紙質資料,不限內容與數量。禁止使用任何電子設備,如電子詞典、U盤等,正規的線下賽禁止上網。不過當然會有一些訓練屬性的線上比賽,如果無監考的話,也就沒什麼限制了。
排名方式:以通過的題數、罰時進行排名,完成題數多的排名在前,題數相同情況下,罰時少的排名在前,罰時也相同的概率較小,當題數與罰時都相同時,排名依據多年以來有不少變化,細節不再贅述。
罰時計算方法:
某道題解出的時刻距離比賽開始的時長,計入總罰時。比如比賽第 20分鐘解出一道題,罰時就是 20;第40分鐘又解出一道題,總罰時就是 20+40=60.
沒有正確解出的題,不計算罰時。
當一道題正確通過之前有過若干次錯誤,每次錯誤罰時 20分鐘,可以把「分鐘」理解為一個「懲罰分數」。比如第 50分鐘做出一道題,在這之前錯了 3次,罰時就是 50+20*3=110.
##時代背景
小說發生在北京奧運到上海世博會這幾年前後,是 ACM-ICPC在國內剛開始大熱的「田園時代」,以國內頭部高校參賽為主,很多學校甚至拿不到現場賽名額,由於比賽難度極大,也很少有學校有能夠指導這項賽事的教練,大多參賽選手都是憑著熱愛為之努力,非常純粹。
小說故事結束後,截至本書寫作的2025年,ACM賽事也一直變化與發展著,後來有了國內教練群體對 ICPC亞洲區組委的不滿,發起了國人自己的「中國大學生程序設計競賽(CCPC)」;ACM不再贊助 ICPC,ICPC獨立成立基金會,比賽官方名稱不再帶有「ACM」;贊助商從IBM變為華為;每場亞洲區域賽國內賽區從當初的一百餘隊發展到三百餘隊;小白書出了訓練指南(大白書),出了第二版變成了紫色(紫書)等等。這些後續的發展並沒有涵蓋在本小說內容里,這裡提及也是避免新時代的 ACMer對小說內容困惑。
如果本小說能得到大家喜歡,也許在未來有精力的話會再寫一些新時代 XCPC的故事。
##附:代碼評測結果
閱讀小說時,如有需求,在此查閱
常見的有如下結果:
- Accepted(AC):正確通過,是唯一表示題目通過的結果
- Pending:程序已錄入資料庫,正在等待評測。
- Pending Rejudge:程序正在等待重測。
- Compiling:程序正在被評測機編譯。
- Presentation Error(PE):程序輸出的答案邏輯正確,但格式沒有與評測數據的輸出完全一致。
- Wrong Answer(WA):最常見的錯誤,即程序輸出的結果不正確。
- Time Limit Exceeded(TLE):程序運行時間超出了題目限制。
- Memory Limit Exceeded(MLE):程序運行需要的內存超出了題目限制。
- Output Limit Exceeded(OLE):程序輸出遠遠超出了評測數據答案的長度,可以理解為 Wrong Answer,只是提示得更具體一些。
- Runtime Error(RE):程序運行錯誤,包括不限於:段錯誤、浮點異常、嘗試讀寫禁止的內存區域、調用了禁止的函數等。
- Compile Error(CE):評測機無法成功編譯程序,即對評測機而言,提交的代碼存在語法錯誤,早年一些平台會將該結果計入罰時,後來普遍的規則是不計入罰時。
隨著時代的發展,也產生了更多的評測結果,這些細節不影響本小說的閱讀。