【轉】如何利用寒假的時間來準備 2020 年的藍橋杯?

全文大概 3000 字,首先簡單介紹了藍橋杯競賽的相關規則,而後詳細描述了每一個等級的路該怎麼走。面試

至於藍橋杯到底有沒有用,仁者見仁,智者見智。算法

指示牌上寫好了路的方向,走不走,值不值得走,怎麼走,都在於本身。數組

基本介紹

藍橋杯按照院校和題目難度分有 A、B、C 三類;按照語言劃分有 C/C++、Java 兩類。網絡

其中參賽 B 類的人數最多(B 類參賽資格是非985/211的本科或者專科),語言方面 C/C++ 參賽最多。數據結構

除了上面難度級別以及語言分類以外,對於藍橋杯咱們還應該瞭解,其分爲省賽和國賽。函數

省賽是每一年三月末到四月初,國賽在五月末。性能

晉級國賽的資格是省賽取得省一等獎。學習

省賽成績在本身語言組別省份中排名前 10% 即可以得到一等獎。(二等獎 20%,三等獎30%,也就是前 60% 就有獎)編碼

不論是 A 類仍是 B 類,省級二等獎和三等獎基本上是沒有什麼含金量的。spa

省一等獎含金量也並不高。

A 類至少國三,B 類國二,纔有必定含金量。

因此,千萬不要認爲本身拿了一個省二就很不錯了。(大一的話還能夠,比較有潛力)

經驗

基本介紹完了,接下來介紹下如何取得省一等獎和國三以上吧。

作到如下三點,一切足以。

  1. 掌握競賽涉及的語言的基本語法,學習和熟悉競賽中經常使用的一些函數(API),無需背,比賽提供 API 文檔。

  2. 至少看一本算法入門書籍(重點推薦《算法競賽入門經典(第二版)》和《挑戰程序設計競賽》),不要求書中算法所有掌握,但要求對基礎算法以及算法競賽有個認識,知道算法競賽是什麼,爲何要參加,能收穫什麼,又該如何去入門與進階。

  3. 刷題,刷題,刷題。找一個適合的 OJ 平臺,針對性刷題,刻意訓練。對於可否取得好成績,這是最重要的一部分,沒有這部分,就算比別人看的基礎算法書多幾本,也很難取得比別人更好的成績。

注意:刷題當然重要,可是必定要刻意練習,刻意刷題!而不是盲目刷題。

在刷題以前,必定要先看書籍,清楚明白本身爲何要刷這些題目,這些題目刷完能學到收穫什麼,對於本身整個算法知識體系的建設起到了什麼做用。

多總結,刷完題最好是把思路和答案分類整理起來,之後遇到同類題型的時候,進行對比和分析。


1、C/C++ 組別

第一階段,省二到省一水平(基礎較差開始)

一、學習 C 語言的基本語法(指針用得較少,文件基本上不會使用)

二、買一本競賽算法書籍,入門算法競賽。推薦《算法競賽入門經典(第二版)》。

前四章是 C 語言基礎語法和算法競賽知識入門(程序設計入門、循環結構程序設計、數組與字符串、函數和遞歸)。

配合一些優質網上博客進行學習,看完《算法競賽入門經典(第二版)》這四章差很少就知道算法競賽是什麼了,可以解決最基礎的一些算法題。

這階段會了解到 OJ 網址是什麼,怎麼去 OJ 網址刷題。在網上能夠找一些比較好的 OJ 網址刷題入門指南,作一些基礎題的練習,50-70 道差很少。(推薦在 Hdu OJ 的第2000-2099中選擇)

三、接着學習《算法競賽入門經典(第二版)》的第 5 章(C++ 語言入門),這一章稍微看一下,瞭解怎麼將 C 語言寫的代碼改成 C++ 語言,另外重點了解 C++ 的 STL 中封裝的一些算法,好比排序相關算法、比較相關算法、交換算法、二分算法、排列生成器算法等,STL 庫中封裝了這些算法,而且實現的性能大多數狀況下比這階段本身寫的更好。

在後面的章節中,會學到這些算法的思想和如何實現。儘管有了 STL 庫,也必定要學這些算法的思想和實現。不論是藍橋杯仍是工做面試,手寫這些算法以及他們的變種都被考過無數次。

這階段,能夠找 5-10 道簡單題練手(時間充足的話能夠多一些)。

四、接着開始學習第 7 章和第 8 章。

第 7 章主要涉及到的內容:最基礎的暴力枚舉,排列組合算法,回溯法,深度搜索算法,廣度搜索算法。

第 8 章主要涉及到的內容:算法效率分析(時間複雜度,空間複雜度。競賽中每道算法題都是有時間和空間限制的),分治算法(二分法),排序和檢索(上面提到過 C++ STL 庫中封裝過排序和檢索算法,學習的時候要觸類旁通,結合起來一塊兒分析運用),貪心算法思想和題型入門(很重要的算法之一,入門簡單,進階很難。這階段涉及到了「區間相關題型」,「部分揹包題型」,「哈夫曼壓縮編碼思想」。網絡尋址中的最小生成樹就是運用的貪心算法思想)。

學到這一步的暴力枚舉、排列生成,而且刻意訓練的總刷題量超過 120 道,無論哪一個省,正常發揮,基本上是省二以及以上。

同時,作題要注意正確率,要是競賽的時候會作但不當心作錯,不少狀況下題目就是0分,說不定明明是省一省二水平,卻省三都沒有拿到。

這例子很是多,也很是重要。謹記。明年成績出來後,必定會有一大片人驚訝,爲何我感受本身省一,卻省三或者根本沒有拿到獎。


第二階段,穩定省一到國二級別(A組到國三級別)

一、完成第一階段全部步驟後,繼續學習第 7 章和第 8 章的其他算法,每種算法類型對應訓練 8-15 道題目,難度逐漸遞增,而且觸類旁通,多總結,嘗試對每種算法類型題型找到本身的解題方法論。

同時能夠配合多本算法書籍一塊兒看,好比貪心算法,能夠同時看下《算法導論》的貪心算法那一章,排序、檢索其餘等算法同理。

刷題的總結過程當中,能夠配合網上優質博客分析更多的思路、優秀的代碼習慣以及解題技巧,同時能夠嘗試學習模仿下,讓其解題技巧成爲本身解題技巧一部分,更高效穩定地刷題。

二、這階段完成以後,能夠看下第 9 章的動態規劃,這是基礎算法裏面最難的算法之一。先稍微入門一下,學會動態規劃的幾種基本題型,好比「揹包」系列題型、最長上升子序列、最長公共子序列等最xxx子序列題型和它們簡單的變種。

而後看一下第 10 章的數論,這部分不難,可是很重要。

三、完成了上面的步驟後,差很少能夠開始學習第 6 章的數據結構了(大一應該都安排了《數據結構與算法》這門課,這是很是重要的一門課),同時要學習好《數據結構與算法》這門課,掌握各種數據結構的思想原理實現方式。

能夠到中國大學 MOOC 網、B 站等學習網址學習這門課。

這裏推薦兩門課:浙江大學陳越老師帶領講的《數據結構與算法》,北京大學郭煒老師講  的《算法基礎》系列課程。

前者是《數據結構與算法》相關,後者是簡單的算法相關。

這階段除了學習第 6 章數據結構外,還要學習下 C++ 的一些其餘操做了(算法競賽相關的),好比 STL 中的 vector、set、map 以及結構體和大整數等,這些內容在第 5 章。

這一階段,除了很是特殊的狀況,基本上是用 C++ 解題。

四、再日後, 第 11 章主要講的是圖論進階,裏面也會結合一些動態規劃、貪心算法(他們自己就密切相關)。

一樣,該階段每一種算法題型都對應刷題 8-15 道。

而後多找比賽參加,好比牛客網、CF(codeforce),atcoder等,該階段在 CF 上再刷幾個月應該能夠達到 1400-1700 分左右。

你們加油:)

相關文章
相關標籤/搜索