JOJ

JOJ

ACM/ICPC(ACM International Collegiate Programming Contest, 國際大學生程式設計競賽)是由國際計算機界歷史悠久、頗具權威性的組織ACM(Association for Computing Machinery,美國計算機協會)主辦的,世界上公認的規模最大、水平最高的國際大學生程式設計競賽,其目的旨在使大學生運用計算機來充分展示自己分析問題和解決問題的能力。

基本介紹

簡介,ACM/ICPC簡介,吉林大學ACM程式設計競賽,歷史成績,參賽對象,競賽細則,ACM/ICPC常見問題解答,

百科名片

joj 是“吉林大學線上評測系統”(JiLin University Online Judge System)的縮寫,是個提供編程題目的網站。目前網站共有程式設計題目2700多道。

簡介

joj(JiLin University Online Judge System),吉林大學 ACM 競賽線上提交系統,建立於 2002 年 12 月 18 日,吉林大學程式設計線上提交與測試系統是一個免費的公益性網上程式設計題庫,目前網站已經擁有上千道各種類型與難度的程式設計題目和完善的線上測試與積分系統,是吉林大學學生提高動手能力的理想平台,也是學校 ACM 選手備戰大賽的重要環節。

ACM/ICPC簡介

1970年在美國Texas a&m大學舉辦了首次區域比賽,從而拉開了國際大學生程式設計競賽的序幕。因歷屆競賽都匯聚了世界各大洲的程式設計精英,雲集了計算機界的“希望之星”,而受到國際各知名大學的重視,並受到全世界各著名計算機公司的高度關注,成為世界各國大學生最具影響力的國際級計算機類的賽事。

吉林大學ACM程式設計競賽

歷史成績

2006年以前,吉林大學於2002、2003、2004、2005年參加亞洲預賽,分別在這八個賽區中取得學校排名第16、第17、第12、第9,第7、第18,第21,第17,共獲得銀獎2塊、銅獎6塊,競賽成績不斷穩步提高。

參賽對象

1、凡吉林大學在校本專科生均可報名參加。年級、專業不限。鼓勵低年級同學參加。
2、比賽學生以個人身份參加,每人獨立參賽。
3、參賽同學應在競賽網站上註冊參加熱身賽,在報名時提供個人資料。
4、參賽同學應保證自己身份等資料的真實性。
5、以往學校代表隊同學成績不影響其他同學排名及獎勵。

競賽細則

1、選手在參賽時攜帶個人證件。
2、競賽以上機為比賽方式。
3、競賽中至少命題6題,至多命題10題,上機比賽時間為5個小時,中間不休息。
4、參賽選手可以攜帶諸如書籍、字典、手冊、程式清單等文字性參考資料。
5、參賽選手不能攜帶任何可用計算機處理的軟體或數據(不允許任何私人攜帶的磁碟或計算器)。
6、參賽選手不能攜帶任何類型的通訊工具,包括無線電接收器、行動電話等。
7、選手未解決全部題目不得提前離場
8、競賽的預定時間為5小時,但當競賽進行一定時間後,競賽裁判可以因為出現不可預見的事件而調整比賽時間長度,一旦比賽時間長度發生改變,將會以及時並且統一的方式通告所有參賽選手。
9、當參賽選手出現妨礙比賽正常進行的行為時,諸如擅自移動賽場中的設備,未經授權修改比賽軟硬體,干擾他人比賽等,都將會被競賽裁判取消參賽資格。
試題與交流
1、競賽中至少命題6題,至多命題10題。題目的次序不代表任何含義,選手可以自由選擇題目解答。
2、試題將以書面形式提供,每人一套,同時提供電子版
3、在競賽過程中,參賽選手不得和其他選手交流。
4、對於機器、環境等其他問題,選手可以與工作人員聯繫。系統支持人員可以回答和系統相關的問題,例如解釋系統錯誤信息
5、對於試題本身的問題可以通過提交程式向裁判提問,裁判根據情況予以解答。裁判認為必要時,將會通知所有選手。
6、比賽的試題及與裁判之間的交流使用的語言為英語。與工作人員交流使用漢語。
競賽評分
1、正確解答中等數量以上試題的選手會根據解題數目進行排名,解題數在中等數量以下的選手只發布解題數量,不進行排名。
2、在進行排名時,如果多人解題數量相同,則根據總用時加上懲罰時間進行排名。總用時和懲罰時間由每道解答正確的試題的用時之和加上懲罰時間之和而成。每道試題用時將從競賽開始到試題解答被判定為正確為止,期間每一次錯誤的運行將被加罰20分鐘時間。未正確解答的試題不記時,對應的錯誤運行也不計入懲罰時間。
3、選手在比賽期間不能看到排名表和他人的成績、解決的問題。
4、比賽中每一道題目對應一種顏色的氣球(顏色的對應在試題中註明)。在選手正確解答出某道題目後,工作人員將會把對應顏色的氣球插到此同學的位置旁。
5、比賽結束前一個小時內,將不再為正確的解答擺放氣球。
6、請注意競賽裁判決定解答提交是否正確需要一定的時間。
7、參賽選手在競賽時由裁決軟體系統隨機確定座位。
競賽環境和競賽語言
1、競賽語言包括C++CJAVAPASCAL
2、每個參賽者使用一台計算機,所有參賽計算機的規格配置完全相同,選手使用MS VC++6語言環境,服務端配置同熱身賽環境。注
3、選手的座位分布由組織者隨機指派,在比賽之前確定,並通知選手。
4、吉林大學ACM/ICPC網站現提供一千餘道練習題目以及線上自動判題系統,報名者可在本網站註冊後進行練習,並參加熱身賽。
5、試題的解答提交裁判稱為運行,每一次運行會被判為正確或者錯誤,判決結果會立即通知參賽隊伍。
競賽評獎
比賽設一等獎,約3名;二等獎,約5名,三等獎,約10名。其他成績較好的同學將獲得紀念獎。往年學校代表隊成員不影響新參賽同學排名得獎。
訓練重點:基本算法、基本程式設計能力
基本算法
1、高精度計算。計算任意長位數的兩數加減乘除四則運算。
參考書目:《國際大學生程式設計競賽輔導教程》,郭嵩山,北京大學出版社
典型例題:1004 1386 1920 1949
2、數論算法。用歐幾里得算法求兩整數的GCD、LCM;求解模線性方程;中國餘數定理;質因數分解等。
參考書目:《實用算法的分析與程式設計》,吳文虎,清華大學出版社
典型例題:1019 1027 1062 1167
3、組合數學算法。生成集合的全排列(有或沒有重複元素);生成集合的所有子集(有或沒有重複元素);組合計數;遞推關係;Polya定理等。
參考書目:《組合數學》,(美)Richard A. Brualdi,機械工業出版社
典型例題:1026 1031 1175 1273
4、常用圖論算法。最短路徑單源最短路徑、指定兩點間最短路徑和任意兩點間最短路徑);無向圖的最小生成樹;求任意圖的連通分量等。
參考書目:《算法設計技巧與分析》,(沙特)M. H. Alsuwaiyel,電子工業出版社
典型例題:1002 1016 1075 1831
5、計算幾何算法。平面上,判斷線段相交(兩條或一組);求任意多邊形面積;判斷給定點是否在多邊形內;求凸包的算法等。
參考書目:《計算幾何-算法分析與設計》,周培德,清華大學出版社
典型例題:1053 1080 1173 1957
基本程式設計能力
1、熟練運用語言。C/C++常用函式;STL等
參考書目:《C++標準程式庫》,(美)Nicolai M. Josuttis,華中科技大學出版社
2、模擬類
典型例題:1034 1035 1060 1086
3、搜尋類。深度優先(剪枝);廣度優先
典型例題:1024 1050 1073 1134
每年度吉林大學ACM代表隊選拔及培訓計畫
選拔範圍:
1、校內選拔賽的獲獎者
2、此後網上競賽成績優秀者
3、JOJ做題數量和質量較高者
培訓計畫:
1、5-6月份,網上單人熱身賽
2、暑假集訓
3、8月份單人選拔
4、9月、10月組隊訓練
5、10月、11月參加分區賽

ACM/ICPC常見問題解答

Q(Question):我能否攜帶字典、書籍和程式清單?
A(Answer):可以,建議至少攜帶一本英文字典。
Q:我能否攜帶光碟、軟碟等存儲介質?
A:不能。
Q:我能否攜帶計算器?
A:不能。
Q:是否提供模擬題?
A:本次比賽不直接提供模擬題,選手可以直接到吉林大學ACM站點的線上測試(JOJ)中作題。站點上的題目與本次比賽在風格、判決方式等方面基本類似,但難度上更高一些。
Q:如果我在比賽過程中對試題有疑問怎么辦?
A:可以通過線上的對話系統詢問裁判。但請使用英語。
Q:我問裁判的問題,別人能夠看到么?
A:一般看不到,當裁判認為這個問題有共性時,可以發布給大家。
Q:在比賽過程中,我能否看到自己的成績?
A:可以看到自己以前的所有提交過程,包括每次提交的結論和提交時間。但不能看到自己在整個賽場的排名。
Q:在比賽過程中,我能否看到別人的成績?
A:除了根據氣球判斷別人解答出的問題外,不能直接看到排名表和別人成績。
Q:我提交一個解答後,多長時間能夠反饋回判決?
A:一般可以馬上得出結果。如果超過5分鐘仍未有結論,請速與工作人員聯繫。
Q:如果我的機器出問題怎么辦?
A:請速與工作人員聯繫。請儘量在測試環境階段發現問題。在正式比賽期間由於機器問題造成的比賽時間延誤,一般不追加時間。
Q:在測試環境過程中,我應該乾什麼?
A:在此階段,將出一道簡單的熱身題目,題目的解答與否與比賽成績沒有任何關係。選手應該在此期間熟悉所用機器的環境,檢查軟硬體是否有問題,並編製程序進行提交,熟悉提交系統的使用方法。可以故意編制一些含有錯誤的程式,熟悉系統對於錯誤提交的反饋結果。
Q:提交的解答由誰來判決?
A:本次比賽的提交程式由程式自動判決。在特殊情況下,由裁判判決。
Q:提交的是程式本身還是執行檔
A:程式。
Q:我是否可以將程式放到多個檔案中?
A:不可以。
Q:是否會因為我的程式書寫規範而獲得獎勵,或者因為程式不易讀而遭到懲罰?
A:不會。一切以程式的執行結果為標準,除非特殊情況,否則裁判不會留意你的程式的。
Q:試題對算法有要求么?
A:沒有,只要在限制時間內能夠正確解答出來就可以。
Q:我的程式的運行時間遠遠低於要求,這是否作為一個衡量標準?
A:不會。只要在規定的時間內運行正確,都將同樣對待。
Q:我已經在紙面上寫出了某道題的答案,但由於時間原因沒有在計算機上運行,能否給一定的分數?
A:不能。本比賽完全按照在計算機上的程式與運行決定成績。
關於試題:
Q:這個競賽都考什麼樣的試題?
A:本競賽是關於程式設計方面的競賽,因此試題類型都是編製程序,解決一個問題。具體樣例可以參見acm網站。
Q:題目的難度如何?
A:一般來說,如果在JOJ上能夠作出50道左右的題目,那么在本次比賽中應該至少作出兩道題。
Q:我一定要按照題目的次序作題么?
A:不。選手可以自由決定作題的次序。試卷中的題目次序與試題難度無關。
Q:我是否要解決所有問題?
A:不必。如果你能解決所有問題,那么可以保證獲得金獎了。
Q:要想獲得一等獎,需要解決多少道題目?
A:按照我們的估計,大概需要解決三分之二以上的題目。
Q:我只會用PASCAL語言,是否可以參賽?
A:可以,本次競賽允許使用PASCAL語言。但國際上的ACM競賽只允許使用C/C++和Java語言,因此如果你想參加吉林大學ACM代表隊,還要學習和使用這兩種語言,尤其是C++。
Q:在判決時使用的數據是否和試題中的一樣?
A:不一樣。判決時使用的數據可以是符合題目要求的各種數據。數據量也可能很大。
Q:我需要測試輸入數據是否滿足輸入條件么?
A:不需要。可以保證輸入數據都是符合題目中的要求的。
Q:數據從那裡輸入?輸出到哪裡?
A:本次比賽的輸入輸出都是標準輸入和標準輸出。例如在C/C++中可以直接使用cin, cout。
Q:我在本地如何進行測試?
A:將你的程式編譯成執行檔後(假設為prog.exe),將輸入數據寫在一個檔案中(假設為in.txt)。在命令行模式下,使用檔案重定向來測試。例如:
Prog < in.txt。也可以將結果寫到另一個檔案中,如prog < in.txt > out.txt。這種方式可以讀取到檔案結束符。
Q:輸入輸出是否有一定要求?
A:是的。試題中對於輸入輸出都有嚴格說明,必須按照這個標準進行。否則程式將不能得到正確結果。
Q:Compiler Error(編譯錯)是什麼含義?
A:這說明你的程式在伺服器上出現編譯錯誤,請查看詳細信息確定錯誤的具體內容。並請檢查提交時是否選擇了正確的語言。
Q:Runtime Error(運行錯)是什麼含義?
A:這說明你的程式在運行期間出現了某些錯誤。常見的錯誤包括:除零錯誤,數組越界,指針指向的單元不存在等。還有一種可能就是在C/C++中,main函式的返回值不是0。
Q:Time Over(逾時)是什麼含義?
A:每一個題目都有一個最大運行時間的要求(在試題中明確標出),如果你的程式的運行時間超過這個要求,將被強制停止,並返回這個錯誤。這種情況可能是由於程式中錯誤地出現了死循環,也可能是因為你的算法不夠最佳化,這就需要重新設計算法和數據結構。
Q:Output Too Much(輸出過多)是什麼含義?
A:在系統中,為管理資源,對每個程式的輸出數量是有限制的。出現這種情況,一般都是因為程式中錯誤地出現了死循環,不斷輸出一些錯誤結果。
Q:Wrong Answer(結果錯)是什麼含義?
A:這是一種最常見的錯誤,也就是說明你的程式的計算出的結果不對。如果你在本地測試正確,則要注意到判決時所使用的可能是各種符合要求的數據,需要考慮你的算法是否考慮到了所有情況。
Q:Presentation Error(格式錯)是什麼含義?
A:如果輸出中只有空格和回車與答案不一樣,則返回這個錯誤。在試題中均有嚴格說明,請仔細察看題目,尤其是空行。這個錯誤一般標誌算法的基本方案已經正確了,離正確解答只有一步之遙。

相關詞條

熱門詞條

聯絡我們