1. 程式人生 > >國內C/C++刷題網站彙總

國內C/C++刷題網站彙總

Welcome To PKU JudgeOnline 北京大學的Online Judge。POJ上面的題目有點老了,但好處是做的人多,經典演算法題多,解題報告也多,適合上手。

ZOJ : Home 浙江大學的Online Judge。ZOJ用的不多,但為數不多的幾次體驗好像都還可以,值得嘗試。

Welcome to Hangzhou Dianzi University Online Judge 杭州電子科技大學的OJ。杭電OJ在近幾年取代了POJ,成為是目前國內最主流的OJ。它的題目豐富,難度梯度合理,廣受全國各大高校的青睞。每年也會有大大小小的比賽掛在杭電的OJ上舉辦,去年的亞洲區網路賽也是在這上面做的。由此可見其在國內廣大ACMer心目中的地位。也正因為如此,網上hdu的解題報告也很多,適合個人進階訓練。

UVa Online Judge
 西班牙Valladolid大學的Online Judge。是最古老也是全世界最知名的Online Judge,題庫有詳細的分類:如世界總決賽題目,劉汝佳的題目等等。題目目型別非常廣泛。絕大部分的題目難度偏易,適合初學者磨練程式設計。

Timus Online Judge URAL是一個俄羅斯的線上題庫。裡面的題目相比國內一些OJ來說頗有些難度,我們學校集訓隊老隊員喜歡拿這裡的題出給新隊員做,可見有一定的進階作用。

Sphere Online Judge (SPOJ) SPOJ是波蘭最為出色的Online Judge之一,介面和諧,題目型別也非常豐富,適合有一定基礎的選手練習,對高手而言也是個提高能力的良好平臺。更多介紹見部落格:SPOJ簡介 - 海山


USA Computing Olympiad USACO是美國中學生的官方競賽網站、美國著名線上題庫,專門為資訊學競賽選手準備;做題方式模擬正式比賽,採用標準測評機、檔案輸入輸出、直接提交程式原始檔的測評方式;網站的Training題目全面,是學習資訊學不可不知的網站,每年NOINOIP 都會參考上面的題目;每道題附有詳細題解,可檢視測試資料和執行結果,便於除錯、發現錯誤並改正。
採用章節遞進的層次結構,由易到難,講授知識、練習程式設計結合,題目必須依次完成,避免了只挑簡單題做的行為;各章節猶如一本競賽輔導書,形成了一個鮮明的知識結構,利於OI初學者和高手逐步提高水平,充分學習資訊學各方面知識,避免偏頗。(來源:usaco_百度百科


Saratov State University :: Online Contester 之前上SGU一直是404,所以不敢貼上來。現在親測能上了就也放上來給大家看看吧。這個是貨真價實的樓教主刷完的OJ。樓教主為什麼要刷這個OJ而不刷這個回答裡的其他OJ呢?因為這個OJ確實適合提升水平,應該跟Ural, SPOJ的難度相當。另外就不太瞭解了,在我心目中,SGU, Ural, SPOJ都適合區域賽衝金以及畢業想去Google等頂級公司的ACMer/Coder訓練,三者區別不大。

Codeforces Codefores是俄羅斯的一個演算法競賽網站,由 Saratov State University 創辦和維護。Codeforces主要強調的是演算法競賽,每隔1個禮拜左右就會有定期的線上比賽舉行,其題庫也是由每場比賽的題目一場場積累下來的。相比上面幾個以題庫為核心的OJ,Codeforces的演算法競賽比較適合鍛鍊自己的臨場發揮和壓力下程式設計能力。

HUSTOJ 華中科技大學的Online Judge。hustOJ也和主流的其他OJ一樣有著豐富的題庫。但它主要的用處,是它所提供的這麼一個叫做vjudge的東西,全稱叫做Virtual Judge。通過vjudge,你可以從各大OJ、包括但不限於上述的所有OJ中直接抽取題目,利用這些題目建立一個屬於你自己的比賽。非常適合專題訓練、日常集訓以及小夥伴們一起比賽切題玩。

LeetCode Online Judge 與很多OJ不同,leetcode是一個主要面向面試者的OJ (LeetCode OJ is a platform for preparing technical coding interviews)。上面的題目不多,目前只有152道,很多都是許多大公司的面試題目。題目型別偏基礎,基本不會考察複雜的演算法,很多都是對基礎知識的應用,難度與topcoder div1 250或codeforces div1 A題難度相當。如果是希望練習程式設計基礎或準備公司面試的話非常推薦此OJ(感謝室友/集訓隊大神/CMU準碩士 @yun peng 同學提供Leetcode介紹 (1/1/2015更新:室友拿了google的offer不去CMU了))。

大視野線上測評·歡迎您 感謝評論區 @秋長澤建議,新增BZOJ。

相關推薦

國內C/C++網站彙總

- Welcome To PKU JudgeOnline 北京大學的Online Judge。POJ上面的題目有點老了,但好處是做的人多,經典演算法題多,解題報告也多,適合上手。 - ZOJ : Home 浙江大學的Online Judge。ZOJ用的不多,但為數不多的幾次體驗好像都還可以,值得嘗試。 - W

C++幾個適合的OJ網站

RQNOJ,VIJOS 這兩個還比較基本,題目也是中文的 對於準備NOI或者省選的話,BZOJ是不錯的 ACM什麼的,最好就做POJ,SGU,Codeforces等題庫,這些都是英文的

c++網站

Welcome To PKU JudgeOnline 北京大學的Online Judge。POJ上面的題目有點老了,但好處是做的人多,經典演算法題多,解題報告也多,適合上手。 - ZOJ : Home 浙江大學的Online Judge。ZOJ用的不多,但為數不多的幾次體驗好

C#LeetCode記錄:從排序陣列中刪除重複項

給定一個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。 不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 O(1) 額外空間的條件下完成。 示例 1: 給定陣列 nums = [1,1,2], 函式應該返回新的長度 2,

C#LeetCode記錄:兩個數之和

給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [

C#LeetCode之#374-猜數字大小(Guess Number Higher or Lower)

問題 我們正在玩一個猜數字遊戲。 遊戲規則如下: 我從 1 到 n 選擇一個數字。 你需要猜我選擇了哪個數字。 每次你猜錯了,我會告訴你這個數字是大了還是小了。 你呼叫一個預先定義好的介面 guess(int num),它會返回 3 個可能的結果(-1,1 或 0): -1 :

C#LeetCode之#704-二分查詢(Binary Search)

問題 給定一個 n 個元素有序的(升序)整型陣列 nums 和一個目標值 target  ,寫一個函式搜尋 nums 中的 target,如果目標值存在返回下標,否則返回 -1。 輸入: nums = [-1,0,3,5,9,12], target = 9 輸出:

C#LeetCode之#278-第一個錯誤的版本(First Bad Version)

問題 你是產品經理,目前正在帶領一個團隊開發新的產品。不幸的是,你的產品的最新版本沒有通過質量檢測。由於每個版本都是基於之前的版本開發的,所以錯誤的版本之後的所有版本都是錯的。 假設你有 n 個版本 [1, 2, ..., n],你想找出導致之後所有版本出錯的第一個錯誤的版本。 你可

C#LeetCode-二分查詢

二分查詢篇 # 題名 刷題 通過率 難度 4 兩個排序陣列的中位數     C#LeetCode刷題之#4-兩個排序陣列的中位

C#LeetCode之#824-山羊拉丁文(Goat Latin)

問題 給定一個由空格分割單詞的句子 S。每個單詞只包含大寫或小寫字母。 我們要將句子轉換為 “Goat Latin”(一種類似於 豬拉丁文 - Pig Latin 的虛構語言)。 山羊拉丁文的規則如下: 如果單詞以母音開頭(a, e, i, o, u),在單詞後新增"ma"。 例

C#LeetCode之#819-最常見的單詞(Most Common Word)

問題 給定一個段落 (paragraph) 和一個禁用單詞列表 (banned)。返回出現次數最多,同時不在禁用列表中的單詞。題目保證至少有一個詞不在禁用列表中,而且答案唯一。 禁用列表中的單詞用小寫字母表示,不含標點符號。段落中的單詞不區分大小寫。答案都是小寫字母。 輸入:

C#LeetCode之#788-旋轉數字(Rotated Digits)

問題 我們稱一個數 X 為好數, 如果它的每位數字逐個地被旋轉 180 度後,我們仍可以得到一個有效的,且和 X 不同的數。要求每位數字都要被旋轉。 如果一個數的每位數字被旋轉以後仍然還是一個數字, 則這個數是有效的。0, 1, 和 8 被旋轉後仍然是它們自己;2 和 5 可以互相旋轉成

C#LeetCode之#709-轉換成小寫字母(To Lower Case)

問題 實現函式 ToLowerCase(),該函式接收一個字串引數 str,並將該字串中的大寫字母轉換成小寫字母,之後返回新的字串。 輸入: "Hello" 輸出: "hello" 輸入: "here" 輸出: "here" 輸入:

C#LeetCode之#686-重複疊加字串匹配(Repeated String Match)

問題 給定兩個字串 A 和 B, 尋找重複疊加字串A的最小次數,使得字串B成為疊加後的字串A的子串,如果不存在則返回 -1。 舉個例子,A = "abcd",B = "cdabcdab"。 答案為 3, 因為 A 重複疊加三遍後為 “abcdabcdabcd”,此時 B 是其子串;A

C#LeetCode之#680-驗證迴文字串 Ⅱ(Valid Palindrome II)

問題 給定一個非空字串 s,最多刪除一個字元。判斷是否能成為迴文字串。 輸入: "aba" 輸出: True 輸入: "abca" 輸出: True 解釋: 你可以刪除c字元。 注意:字串只包含從 a-z 的小寫字母。字串的最大長度是

C#LeetCode之#657-機器人能否返回原點(Robot Return to Origin)

問題 在二維平面上,有一個機器人從原點 (0, 0) 開始。給出它的移動順序,判斷這個機器人在完成移動後是否在 (0, 0) 處結束。 移動順序由字串表示。字元 move[i] 表示其第 i 次移動。機器人的有效動作有 R(右),L(左),U(上)和 D(下)。如果機器人在完成所有動作後

C#LeetCode之#557-反轉字串中的單詞 III(Reverse Words in a String III)

問題 給定一個字串,你需要反轉字串中每個單詞的字元順序,同時仍保留空格和單詞的初始順序。 輸入: "Let's take LeetCode contest" 輸出: "s'teL ekat edoCteeL tsetnoc"  注意:在字串中,每個單詞由

C#LeetCode之#541-反轉字串 II(Reverse String II)

問題 給定一個字串和一個整數 k,你需要對從字串開頭算起的每個 2k 個字元的前k個字元進行反轉。如果剩餘少於 k 個字元,則將剩餘的所有全部反轉。如果有小於 2k 但大於或等於 k 個字元,則反轉前 k 個字元,並將剩餘的字元保持原樣。 輸入: s = "abcdefg", k

C#LeetCode之#551-學生出勤紀錄 I(Student Attendance Record I)

問題 給定一個字串來代表一個學生的出勤紀錄,這個紀錄僅包含以下三個字元: 'A' : Absent,缺勤 'L' : Late,遲到 'P' : Present,到場 如果一個學生的出勤紀錄中不超過一個'A'(缺勤)並且不超過兩個連續的'L'(遲到),那麼這個學生會被獎賞。 你需要根

C#LeetCode之#521-最長特殊序列 Ⅰ(Longest Uncommon Subsequence I)

問題 給定兩個字串,你需要從這兩個字串中找出最長的特殊序列。最長特殊序列定義如下:該序列為某字串獨有的最長子序列(即不能是其他字串的子序列)。 子序列可以通過刪去字串中的某些字元實現,但不能改變剩餘字元的相對順序。空序列為所有字串的子序列,任何字串為其自身的子序列。 輸入為兩個字串,