Ⅰ 我要達到怎樣的水平才能去參加acm編程比賽
演算法,數據結構是關鍵,另外還有組合數學,特別是集合與圖論,概率論也重要。推薦買一本《演算法導論》,那本書行,看起來超爽!基本掌握語法還不行啊,語法的超熟練掌握,不然出了錯誤很難調試的!最重要的是超牛皮的頭腦啦,分析能力,邏輯推理能力很重要。ACM很好玩啦,祝你成功!
acm是3人一組的,以學校為單位報名的,也就是說要得到學校同意,還要有2個一起搞的。其實可能是你不知道你們學校搞acm的地方正州,建議你好好詢問下你們學校管科技創新方面的人。建議你找幾個興趣相同的一起做,互相探討效果好多了,團隊合作也是acm要求的3大能力之一。
數據結構遠遠不夠的,建議你看演算法導論,黑書,oj的話個人覺得還是poj好,有水題有好題,而且做的人多,要解題報告什麼的也好找。我們就是一些做acm的學生一起搞,也沒老師,這樣肯定能行的。
基礎的話是語言,然後數據結構,然後演算法。
ACM有三個方向:演算法,數學,實現
要求三種能力:英文,自學,團隊協作
簡單的說,你要能讀懂英文的題意描述,要有一門acm能使用的編程語言,要會數據結構,有一點數學基礎,一點編程方面天賦,要有興趣和毅力(最重要),就具有做ACM的基本條件了。
做acm我推薦c,c也可以,java在某些情況下好用,但是大多數情況的效率和代碼量都不大好,所以建議主用c,有些題目用java
還有什麼問題,可以問我啊。
不好意思,沒見過用java描述的acm書籍,大多數是用偽命令,其他有的用的c,c,老一些的用pascal。java只是用來做高精度的一些題的,個人覺得不用專門看這方面的書,java的基本部分學好就夠用了。所以我還是推薦主用c,在高精度和個別題再用java。你可以找找java描述的演算法設計與分析,這個好像有
數據結構:C語言版 清華大學出版社 嚴蔚敏 《數據結構》
演算法:清華大學出版社 王曉東 《演算法設計與分析》
麻省理工大學 中譯本:機械工業出版社 《演算法導論》
基本上這三本書就已經足夠了,建議一般水平的人先不要看演算法導論,待另外兩本書看的差不多的時候,再看演算法導論加深理解。
另外還有很多針對性更強的書籍,不過針對性太強,這里就不多介紹了。
以上一些都是些演算法方面的書,最好的方式就是做題與看書相結合,很多在線做題的網站,PKU,ZOJ很多,推薦PKU,題目比較多,參與的人比較多。做一段時間的題,然後看書,研究演算法,再做題,這樣進步比較快。
還有關於ACM競賽,我有自己的一點話說。
首先說下ACM/ICPC是個團隊項目,最後的參賽名額是按照學校為單位的,所以找到志同道合的隊友和學校的支持是很重要的。
剛剛接觸信息學領域的同學往往存在很多困惑,不知道從何入手學習,在這篇文章里,我希望能將自己不多的經驗與大家分享,希望對各位有所幫助。
一、語言是最重要的基本功
無論側重於什麼方面,只要是通過計算機程序去最終實現的競賽,語言都是大家要過的第一道關。亞洲賽區的比賽支持的語言包括C/C與JAVA。筆者首先說說JAVA,眾所周知,作為面向對象的王牌語言,JAVA在大型工程的組織與安全性方面有著自己獨特的優勢,但是對於信息學比賽的具體場合,JAVA則顯得不那麼合適,它對於輸入輸出流的操作相比於C要繁雜很多,更為重要的是JAVA程序的運行速度要比C慢10倍以上,而競賽中對於JAVA程序的運行時限卻往往得不到同等比例的放寬,這無疑對演算法設計提出了更高的要求,是相當不利的。其實,筆者並不主張大家在這種場合過多地運用面向對象的程序設計思維,因為對於小程序來說這不旦需要花費更多的時間去編寫代碼,也會降低程序的執行效率。
接著說C和C。許多現在參加講座的同學還在上大一,C的基礎知識剛剛學完,還沒有接觸過C,其實在賽場上使用純C的選手還是大有人在的,它們主要是看重了純C在效率上的優勢,所以這部分同學如果時間有限,並不需要急著去學習新的語言,只要提高了自己在演算法設計上的造詣,純C一樣能發揮巨大的威力。
而C相對於C,在輸入輸出流上的封裝大大方便了我們的操作,同時降低了出錯的可能性,並舉虧蔽且能夠很好地實現標准流與文件流的切換,方便了調試的工作。如果有些同學比較在意這點,可以嘗試C和C的混編,畢竟僅僅學習C的流操作還是不花什麼時間的。
C的另一個支持來源於標准模版庫(STL),庫中提供的對於基本數據結構的統一介面操作和基本演算法的實現可以縮減我們編寫代碼的長度,這可以節省一些時間。但是,空豎與此相對的,使用STL要在效率上做出一些犧牲,對於輸入規模很大的題目,有時候必須放棄STL,這意味著我們不能存在「有了STL就可以不去管基本演算法的實現」的想法;另外,熟練和恰當地使用STL必須經過一定時間的積累,准確地了解各種操作的時間復雜度,切忌對STL中不熟悉的部分濫用,因為這其中蘊涵著許多初學者不易發現的陷阱。
通過以上的分析,我們可以看出僅就信息學競賽而言,對語言的掌握並不要求十分全面,但是對於經常用到的部分,必須十分熟練,不允許有半點不清楚的地方,下面我舉個真實的例子來說明這個道理——即使是一點很細微的語言障礙,都有可能釀成錯誤:
在去年清華的賽區上,有一個隊在做F題的時候使用了cout和printf的混合輸出,由於一個帶緩沖一個不帶,所以輸出一長就混亂了。只是因為當時judge team中負責F題的人眼睛尖,看出答案沒錯只是順序不對(答案有一頁多,是所有題目中最長的一個輸出),又看了看程序發現只是輸出問題就給了個 error(格式錯)。如果審題的人不是這樣而是直接給一個 Wrong Answer,相信這個隊是很難查到自己錯在什麼地方的。
現在我們轉入第二個方面的討論,基礎學科知識的積累。
二、以數學為主的基礎知識十分重要
雖然被定性為程序設計競賽,但是參賽選手所遇到的問題更多的是沒有解決問題的思路,而不是有了思路卻死活不能實現,這就是平時積累的基礎知識不夠。今年World Final的總冠軍是波蘭華沙大學,其成員出自於數學系而非計算機系,這就是一個鮮活的例子。競賽中對於基礎學科的涉及主要集中於數學,此外對於物理、電路等等也可能有一定應用,但是不多。因此,大一的同學也不必為自己還沒學數據結構而感到不知從何入手提高,把數學撿起來吧!下面我來談談在競賽中應用的數學的主要分支。
1、離散數學——作為計算機學科的基礎,離散數學是競賽中涉及最多的數學分支,其重中之重又在於圖論和組合數學,尤其是圖論。
圖論之所以運用最多是因為它的變化最多,而且可以輕易地結合基本數據結構和許多演算法的基本思想,較多用到的知識包括連通性判斷、DFS和BFS,關節點和關鍵路徑、歐拉迴路、最小生成樹、最短路徑、二部圖匹配和網路流等等。雖然這部分的比重很大,但是往往也是競賽中的難題所在,如果有初學者對於這部分的某些具體內容暫時感到力不從心,也不必著急,可以慢慢積累。
競賽中設計的組合計數問題大都需要用組合數學來解決,組合數學中的知識相比於圖論要簡單一些,很多知識對於小學上過奧校的同學來說已經十分熟悉,但是也有一些部分需要先對代數結構中的群論有初步了解才能進行學習。組合數學在競賽中很少以難題的形式出現,但是如果積累不夠,任何一道這方面的題目卻都有可能成為難題。
2、數論——以素數判斷和同餘為模型構造出來的題目往往需要較多的數論知識來解決,這部分在競賽中的比重並不大,但只要來上一道,也足以使知識不足的人冥思苦想上一陣時間。素數判斷和同餘最常見的是在以密碼學為背景的題目中出現,在運用密碼學常識確定大概的過程之後,核心演算法往往要涉及數論的內容。
3、計算幾何——計算幾何相比於其它部分來說是比較獨立的,就是說它和其它的知識點很少有過多的結合,較常用到的部分包括——線段相交的判斷、多邊形面積的計算、內點外點的判斷、凸包等等。計算幾何的題目難度不會很大,但也永遠不會成為最弱的題。
4、線性代數——對線性代數的應用都是圍繞矩陣展開的,一些表面上是模擬的題目往往可以藉助於矩陣來找到更好的演算法。
5、概率論——競賽是以黑箱來判卷的,這就是說你幾乎不能動使用概率演算法的念頭,但這也並不是說概率就沒有用。關於這一點,只有通過一定的練習才能體會。
6、初等數學與解析幾何——這主要就是中學的知識了,用的不多,但是至少比高等數學多,我覺得熟悉一下數學手冊上的相關內容,至少要知道在哪兒能查到,還是必要的。
7、高等數學——純粹運用高等數學來解決的題目我接觸的只有一道,但是一些題目的敘述背景往往需要和這部分有一定聯系,掌握得牢固一些總歸沒有壞處。
以上就是競賽所涉及的數學領域,可以說范圍是相當廣的。我認識的許多人去搞信息學的競賽就是為了逼著自己多學一點數學,因為數學是一切一切的基礎。
三、數據結構與演算法是真正的核心
雖然數學十分十分重要,但是如果讓三個只會數學的人參加比賽,我相信多數情況下會比三個只會數據結構與演算法的人得到更為悲慘的結局。
先說說數據結構。掌握隊列、堆棧和圖的基本表達與操作是必需的,至於樹,我個人覺得需要建樹的問題有但是並不多。(但是樹往往是很重要的分析工具)除此之外,排序和查找並不需要對所有方式都能很熟練的掌握,但你必須保證自己對於各種情況都有一個在時間復雜度上滿足最低要求的解決方案。說到時間復雜度,就又該說說哈希表了,競賽時對時間的限制遠遠多於對空間的限制,這要求大家盡快掌握「以空間換時間」的原則策略,能用哈希表來存儲的數據一定不要到時候再去查找,如果實在不能建哈希表,再看看能否建二叉查找樹等等——這都是爭取時間的策略,掌握這些技巧需要大家對數據結構尤其是演算法復雜度有比較全面的理性和感性認識。
接著說說演算法。演算法中最基本和常用的是搜索,主要是回溯和分支限界法的使用。這里要說的是,有些初學者在學習這些搜索基本演算法是不太注意剪枝,這是十分不可取的,因為所有搜索的題目給你的測試用例都不會有很大的規模,你往往察覺不出程序運行的時間問題,但是真正的測試數據一定能過濾出那些沒有剪枝的演算法。實際上參賽選手基本上都會使用常用的搜索演算法,題目的區分度往往就是建立在諸如剪枝之類的優化上了。
常用演算法中的另一類是以「相似或相同子問題」為核心的,包括遞推、遞歸、貪心法和動態規劃。這其中比較難於掌握的就是動態規劃,如何抽象出重復的子問題是很多題目的難點所在,筆者建議初學者仔細理解圖論中一些以動態規劃為基本思想所建立起來的基本演算法(比如Floyd-Warshall演算法),並且多閱讀一些定理的證明,這雖然不能有什麼直接的幫助,但是長期堅持就會對思維很有幫助。
四、團隊配合
通過以上的介紹大家也可以看出,信息學競賽對於知識面覆蓋的非常廣,想憑一己之力全部消化這些東西實在是相當困難的,這就要求我們盡可能地發揮團隊協作的精神。同組成員之間的熟練配合和默契的形成需要時間,具體的情況因成員的組成不同而不同,這里我就不再多說了。
五、練習、練習、再練習
知識的積累固然重要,但是信息學終究不是看出來的,而是練出來的,這是多少前人最深的一點體會,只有通過具體題目的分析和實踐,才能真正掌握數學的使用和演算法的應用,並在不斷的練習中增加編程經驗和技巧,提高對時間復雜度的感性認識,優化時間的分配,加強團隊的配合。總之,在這里光有紙上談兵是絕對不行的,必須要通過實戰來鍛煉自己。
大家一定要問,我們去哪裡找題做,又如何檢驗程序是否正確呢?這大可不必擔心,現在已經有了很多網上做題的站點,這些站點提供了大量的題庫並支持在線判卷,你只需要把程序源碼提交上去,馬上就可以知道自己的程序是否正確,運行所使用的時間以及消耗的內存等等狀況。下面我給大家推薦幾個站點,筆者不建議大家在所有這些站點上做題,選擇一個就可以了,因為每個站點的題都有一定的難易比例,系統地做一套題庫可以使你對各種難度、各種類型的題都有所認識。
1、Ural:
Ural是中國學生對俄羅斯的Ural州立大學的簡稱 ,那裡設立了一個Ural Online Problem Set,並且支持Online Judge。Ural的不少題目演算法性和趣聞性都很強,得到了國內廣大學生的厚愛。根據「信息學初學者之家」網站的統計,Ural的題目類型大概呈如下的分布:
題型
搜索
動態規劃
貪心
構造
圖論
計算幾何
純數學問題
數據結構
其它
所佔比例
約10%
約15%
約5%
約5%
約10%
約5%
約20%
約5%
約25%
這和實際比賽中的題型分布也是大體相當的。有興趣的朋友可以去看看。
2、UVA:
UVA代表西班牙Valladolid大學(University de Valladolid)。該大學有一個那裡設立了一個PROBLEM SET ARCHIVE with ONLINE JUDGE ,並且支持ONLINE JUDGE,形式和Ural大學的題庫類似。不過和Ural不同的是,UVA題目多的多,而且比較雜,而且有些題目的測試數據比較刁鑽。這使得剛到那裡做題的朋友往往感覺到無所適從,要麼難以找到合適的題目,要麼Wrong Answer了很多次以後仍然不知道錯在那裡。 如果說做Ural題目主要是為了訓練演算法,那麼UVA題目可以訓練全方位的基本功和一些必要的編程素質。UVA和許多世界知名大學聯合辦有同步網上比賽,因此那裡強人無數,不過你先要使自己具有聽懂他們在說什麼的素質:)
3、ZOJ:
ZOJ是浙江大學建立的ONLINE JUDGE,是中國大學建立的第一個同類站點,也是最好和人氣最高的一個,筆者和許多班裡的同學就是在這里練習。ZOJ雖然也定位為一個英文網站,但是這里的中國學生比較多,因此讓人覺得很親切。這里目前有500多道題目,難易分配適中,且涵蓋了各大洲的題目類型並配有索引,除此之外,ZOJ的JUDGE系統是幾個網站中表現得比較好的一個,很少出現Wrong Answer和 error混淆的情況。這里每月也辦有一次網上比賽,只要是注冊的用戶都可以參加。
說起中國的ONLINE JUDGE,去年才開始參加ACM競賽的北京大學現在也建立了自己的提交系統;而我們學校也是去年開始參加比賽,現在也有可能推出自己的提交系統,如果能夠做成,到時候大家就可以去上面做題了。同類網站的飛速發展標志著有越來越多的同學有興趣進入信息學的領域探索,這是一件好事,同時也意味著更激烈的競爭。
Ⅱ 北大ACM第2602 2603題
2602:
#include<stdio.h>
char a[1000050],b[1000050],c[1000050],str[10];
int n;
int main()
{
int i;
scanf("%d\n",&n);
for(i=1;i<=n;i++)
{
gets(str);
a[i]=str[0]-48;b[i]=str[2]-48;
}
c[n]=0;
for(i=n;i>0;i--)
{
c[i]+=a[i]+b[i];
c[i-1]=c[i]>=10?1:0;
c[i]=c[i]>物宴=10?c[i]-10:c[i];
}
for(i=1;i<=n;i++)putchar(c[i]+48);printf("\n");
return 0;
}
2603:
#include<手螞猛stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int x,i,n=10;int a[10002];a[1]=0;memset(a,0,sizeof(a));
while(n--)
{
scanf("%d",&x);
for(i=2;x!=1;i++)
{
while(x%i==0&&x!=1)
{
a[i]++;x/=i;
}
if(x==1)
break;
}
}
x=1;
for(i=2;i<10000;i++)
{
if(a[i]!=0)
{
x=x*(1+a[i])%10;
}
}
printf("%d\畢橋n",x);
return 0;
}
Ⅲ 求像北大百練POJ那樣的提供程序設計題目的網站的網址,最好是中文的
Online Judge簡稱OJ,意思是在線評測平台,多指信息學在線評測平台。
知名的OJ有:RQNOJ,URAL,SPOJ,vijos,USACO,sgu,pku(poj),zju(toj),tju,uva等。
著名OJ網址:
中文OJ:
任青網路在線測評系統RQNOJ:http://www.rqnoj.cn/
高效信息學評測系統vijos: http://www.vijos.cn (2008.7.12復活)
英文OJ:
北京大學pku: http://acm.pku.e.cn/OnlineJudge/ (most English)
美國官方USACO: http://ace.delos.com/usacogate/ (America, English)
南開大學nkpc: http://acm.nankai.e.cn (most English)
浙江大學OJ:http://acm.zju.e.cn/ (英語)
首先是國內比較老牌的知名OJ:
PKU/POJ(Peking University Judge Online For ACM/ICPC)
地址:
http://acm.pku.cn/JudgeOnline
介紹:
北京大學的題庫,我主要在做的一個.題目數量很多,OJ的各項功能也很完善,而且還提供免費的OJ系統下載,可以利用提供的系統自己搭建OJ.題目數量很多,有幾千道,但水題也很多.關於這一點,因為題目數量大,所以水題自然就多,但這不說明PKU的題目質量不高.PKU的難題還是不少的,而且做不做水題還是要由做題人自己決定的,和OJ無關.
推薦程度(最高10):
8
推薦做法:
如果是初學者或者僅僅想提高變成准確性,那麼按照AC率做,保證1Y率;如果是有一定水平的OIer,可以每頁完成40~50題;如果是大牛,那麼盡量做吧;如果想專門訓練某個項目,可以去網上搜pku題目分類,個人覺得pku里的dp題和數學題比較多.
ZJU/ZOJ(Zhejiang University Online Judge)
地址:
http://acm.zju.e.cn/
介紹:
浙江大學的題庫,國內起步最早的幾個OJ之一.題目數量也接近2000.我沒有太多的做zju的題目,所以不好說題目質量如何.OJ系統的友好性不如pku,但功能並不差.應該可以作為pku的替代品.
推薦程度:
7
推薦做法:
無(可以參考pku做法)
HOJ
地址:
http://acm.hit.e.cn/ (網通代理http://acm-hit.sunner.cn)
介紹:
哈爾濱工業大學OJ,相對來說起步不早也不晚,曾經也涌現了許多大牛。現在題目數量接近3000,難度參差不起,由於學校開始重視其ACM,最近活動頻繁。不過友好性較差,系統構建不是很完善,但功能不差。
推薦程度:
6
推薦做法:
無
然後是一些不太知名的或比較新的:
RQNOJ(RenQingNet Online Judge,任青網路信息學奧賽(OI)在輪山判線判題系統)
地址:
http://www.rqnoj.cn/
介紹:
RQNOJ經過了一年的時間唯臘逐漸的成熟起來,題目的數量也不斷的增加,使用的用戶數量也上升了不少,對於最近RQNOJ推出的臘改一些新功能,很值得稱贊。還有經常有一些比賽,可以去參加。
推薦程度:
7
推薦做法:
做一些有難度的題目
Vijos(Velocious Informatics Judge Online System)
地址:
http://www.vijos.cn/
介紹:
說到現在的OJ,就不得不提Vijos.Vijos是Vivian Snow(就是湖南師大附中的劉康,個人主頁是http://www.viviansnow.cn/,現在似乎上不去了=.=)搞的一個Judge系統,本來是作為創新大賽作品的,後來就搞起來了,現在人氣很旺.但是Vijos的各種事情很多,而且伺服器不穩定,速度慢不說還時不時的關閉.關於Vijos的事情大家可以參考Dragon.Dai在Vijos的1周歲時候寫下的這篇<Vijos的過去,現在和將來>(http://www.mybloop.com/get/376674/Vijos.doc),這里不再贅述.Vijos上所有人都可以上傳自己的題目,雖然增加了很多靈活性,但由此導致的是題目水平參差不齊.而且上傳題目的人在選擇題目難度的時候很難做出同樣的判斷,都有自己的個人見解,所以本來題目難度是很好的一個設計,現在卻成了雞肋。從2007年末曾關閉維護了一段時間,現在已於2008.7.12復活。
推薦程度:
5
推薦做法:
用來測試競賽原題,另外可以做一做AC率較低的題目.不推薦做大量的Vijos題目(yours牛別打我...).
TJU/TOJ(Tianjin University Online Judge)
地址:
http://acm.tju.e.cn/toj
介紹:
可能大家都以為是同濟的題庫了吧=.=,其實這個是天津大學的,因為筆者是天津人,所以對這個OJ有獨特的感情...雖然沒怎麼做過.總體來說比zoj稍差,題目質量不確定(我說了我沒怎麼做過...),一般我都用來做Contests.
推薦程度:
5
推薦做法:
無,可以做做Contests.注意是Online Contests而不是Virtual Contests,Virtual那個...打開就能知道,是利用TOJ自己的題庫出Contests...其實這個設計很新穎,所有人都可以出測試.適合隊內搞測驗...
NKOJ(Nankai Online Judge)
地址:
http://acm.nankai.e.cn/
介紹:
這個是天津市南開大學的OJ,想必大多數人都不知道吧?在看下面的介紹之前,你可以先上去看看,體會一下.你一定會發現,通過大量Ajax技術的應用,加上清新的界面,你會感到十分舒適.而且nkoj似乎有一個功能是自己不出現在Rank List和Status裡面,這個功能很貼心.題目是nkoj最大的弱點,數量不大,質量一般.不過因為是中英文題目夾雜且中文題目數量不少(和pku比),所以想做中文題的除了Vijos也可以來這里看看.其實nkoj比vijos要漂亮的多,速度比vijos稍快,穩定性...應該比vijos好不少吧.
推薦程度:
5
推薦做法:
做中文題.
接下來說一下國外的OJ:
SGU(Saratov State University Online Contester)
地址:
http://acm.sgu.ru/
介紹:
sgu是俄羅斯斯坦福州立大學(大概是這個名字)的OJ,很老牌了.題目數量很少,但題題精煉,每做一道題都會讓你的編程水平上升.在有一定編程水平之後可以試著做做,要爭取做出每一道題.如果sgu能全部AC的話...那這個人不是抄襲就是神牛...注意status需要通過左邊的"status online"鏈接來看,而且sgu速度稍慢並且不太穩定.總之是非常特別以及及其應該推薦的OJ.
推薦程度:
9
推薦做法:
AC每一道題,可以按照AC Rate來做.
Ural(Timus Online Judge)
地址:
http://acm.timus.ru/
介紹:
Ural是Ural State University的一個OJ,題目不是很多,但都是原創,而且比較經典.如果sgu做著費勁,那麼試試Ural吧.
推薦程度:
8
推薦做法:
試著做做每一道題吧,可以按照AC Rate來.
樓主如果要中文題,又要有難度的話建議去USACO,http://ace.delos.com/usacogate?a=ywd3y6w9Cbo&C=2 網上可以找到譯題
http://www.oiers.cn/usaco%20training/
Ⅳ 關於ACM!!!
ACM 即歷鎮彎 Association for Computing Machinery ,就是(美國)計算機協會。
ACM競賽,是指ACM-ICPC競賽
ICPC是International Collegiate Programming Contest(國際大學生程序設計競賽)
現在,ACM競賽就成為了編程競賽的一個稱呼,不一定要是美國的或者國際的。
ACM競賽常用判題系統是「在線測評系統」(OJ系統)。所謂OJ系統,就是網頁上幾道題目,讓你用編程語言(例如C語言、C++語言、Java語言、Pascal語言等等)來編寫一個程序,在網頁上提交,過一會兒結果就出來的。
可以看看肢悶一些國內著名的OJ系統,例如:
杭電OJ系統(杭州電子科技大學在線判題系統):http://acm.h.e.cn/
ZOJ(浙江大學OJ):http://acm.zju.e.cn/
JOJ(吉林大學OJ):http://acm.jlu.e.cn/
廈門大學OJ:http://acm.xmu.e.cn/
POJ(北京大學OJ):http://poj.org/
南開大旅鎮學OJ:http://acm.nankai.e.cn/
TOJ(天津大學OJ):http://acm.tju.e.cn/toj/
再提供一些國外知名的OJ系統:
UVa OJ(巴利亞多利德大學OJ,位於西班牙):http://uva.onlinejudge.org/
Timus OJ:http://acm.timus.ru/
SPOJ(Sphere OJ):http://www.spoj.pl/
AOJ(AIZU OJ):http://judge.u-aizu.ac.jp/onlinejudge/