藍橋盃賽前突擊
1.大綱精讀
官方只支援 Dev-cpp 5.11 (和平時用的差不多)。
C++11的使用,在Dev-cpp 工具 裡面選擇 編譯選項 輸入 -std=c++11
並選擇 編譯時加入以下命令。
是支援使用 unordered_map
和 auto
的,還有 __int128
。
一定要記得 return 0;
去年聽說是沒 return 0;
直接省四,但一些人沒 return 0;
又沒事,不管是不是真的都要 return 0;
畢竟是一個好習慣。
提取出考點:
計算機演算法:列舉、排序、搜尋、計數、貪心、動態規劃、圖論、數論、字串演算法等。
資料結構:陣列、物件/結構、字串、佇列、棧、樹、圖、堆、平衡樹/線段樹等。
2.考點分析
列舉,排序,搜素,貪心感覺都可以規劃為(優雅的)暴力。
刷題可能刷到原題,原題可能來自於以下平臺:洛谷題單,codeforces(英文題翻譯成中文),牛客小白月賽,牛客周賽,atcoder ABC(翻譯成中文)等。
省二+/省一-:
演算法:
列舉:這個有難有簡單的,近幾年感覺有一個變難的趨勢,但是差不多都離不開 日期和年份,多刷一點這方面的題就好了。
常用技巧:for迴圈, dfs, bfs, while 迴圈, next_permutation
偶爾也需要 eps控制精度(去年), 字首和, 差分, 雙指標等
方式最佳化。
排序: 一般和貪心一塊考,一定要學會自定義結構體排序 cmp
。
常用技巧:sort, cmp, merage_sort(求逆序對,基本沒遇上過,遇到了也可以用離散化+樹狀陣列水過去)
。
搜尋:也是有難有簡單,前年有一道掃雷(官網那個掃雷不是原題)可以說非常的陰間,多寫題就會了。
常用技巧:染色, dfs, bfs
,染色的技巧還是挺重要的,一定要掌握。
貪心:對於這種題其實就是多練+猜結論,這種題又一般和思維,字首和,差分,排序,區間問題,一同出現,多練典題就行了。
常用技巧:cmp + sort, 字首和, 差分, 雙指標, 區間處理
。
資料結構:
陣列,結構體,佇列,棧,這些都是基礎,一定要會。
連結串列:這個可能會考,對於一些插入次數多以及刪除次數多的可能會用到,大部分情況可以用三個陣列模擬連結串列。
字串:主要掌握STL string
的常用函式就行了,比如 s.substr, stoll, to_string
等。
樹:這個考的比較少,大多數直接用存圖的方式就可以模擬一棵樹,所以直接去看圖。
圖:這個比較重要,一般掌握鄰接表存圖就行了,簡單的拓撲排序
要會寫。
堆:就是 priority_queue
,要掌握怎麼過載結構體的 <
自定義大根堆和小根堆。
講完了暴力,現在再講一些其他的(其實掌握前面這些加一些簡單資料結構就已經能夠藍橋杯省二甚至說藍橋杯省一的水平了,前面有不會的一定要去補)。
省一+:
想穩定省一,前面提到的知識一定都要會,還有就是更難得部分。
演算法:
動態規劃:一定得掌握揹包問題,其他一般都是考 線性DP
,動態規劃的題不太好總結,總之多刷題就會了。
二分:非常經典的演算法,難在能不能看出這是一道二分。
計數:考得簡單就是字首和雙指標亂水就過了,難的話可能就和動態規劃聯絡在一起。
圖論:最短路演算法 dijkstra, floyd
, 最小生成樹 克魯斯卡爾 prim
, 最近公共祖先(LCA)tarjan
等演算法。
數論:歐幾里得演算法,擴充套件歐幾里得演算法,質數篩等。
字串:字串雜湊,字典樹,01trie,KMP等常見演算法。
資料結構:
並查集:必須得掌握的資料結構。
樹狀陣列:會簡單用法就行,進階用法掌握用維護差分陣列 和 差分*i 陣列 區間求和區間修改。
線段樹:會解決基礎的線上RMQ問題就行。
平衡樹:會寫一種就行。