OI暑假集訓遊記

2022-08-22 11:09:15 字數 3984 閱讀 7410

written byjum leon.

i

又是一載夏,本蒟蒻以特長生考入莞中,懷著忐忑的心情到了8月,是集訓之際。懷著對演算法學習的嚮往心情被大佬暴虐的一絲恐懼來到了莞中。

這裡真是個好地方啊,座居莞城**,聚集四方靈氣。伙食好,我們學習自然好。(廖老師超級友好的

ii

首先感覺在莞中學習真的十分幸運,這裡學習的環境、氛圍都很好。我們可以互相幫助,互相幫忙講解不理解的題目,或是分享自己的方法。有廖老師帶我們飛(強,組織我們講解題目,重點難點廖老師會親自給我們講解。我覺得廖老師是乙個很有耐心,很好的老師,他不僅僅幫我們細緻的講課,在我們做題時遭遇困難時會親自幫忙講解,審查**,發現並且指出我們具體的學習上的錯誤,十分有利於我們對自己進一步的優化與學習。

在莞中每天早出晚歸,覺得莞中的早餐大包特別好吃;清晨校門假山前的蓮花錦鯉好看;傍晚南區的天空雲彩十分燦爛;三尺講台上的廖老師十分友愛。

收穫如秋日果園中累累碩果般。有好幾方面的。

首先是學習上的。對於提高組的題目,題型有了乙個更加完全的了解。

鞏固了許多基礎的資料結構。棧,佇列,堆,鏈式前向星等資料結構。還有提高組十常用並且高效的並查集,雜湊表等。還學習了c++特有的stl:動態vector陣列,優先佇列,重定義運算子等。

除了資料結構,我們主要學習的就是演算法了,重新熟悉了深搜,廣搜,在廣搜專題中學習了特殊廣搜題型的狀態壓縮,有關二進位制的位運算,還有stl的queue應用,提高了我們對演算法的認知。

學習並鞏固了許多學過和沒有學過的圖論演算法,最基礎的最小生成樹開始,了解了prim和kruskal的演算法工作原理,以及哪個適用於稠密圖,哪個適用於稀疏圖。

三種常見的最短路演算法,floyd,dijkstra,spfa。從單源點到多源點。在結合題目的練習中總結了最短路演算法的應用,還有vector應用於鄰接鍊錶的結構,在某些題目中單向邊和反向邊的應用。 用spfa處理圖中負邊權和環的情況。

學習了堆的原理,操作和維護乙個堆的方法,以及在最小生成樹prim演算法和單源最短路dijkstra演算法中如何用堆優化時間效率。學習了並查集的原理和並查集的優化方法,以及在最小生成樹kruskal演算法中應用並查集優化時間效率。還有拓撲思想和拓撲中的關鍵路徑。

動態規劃方面同樣收穫頗豐。從大量的題目中了解到了基礎的動態規劃演算法的變形,如揹包問題的變形,最大連續子串行和,最長不下降序列,最長公共子串行的變形。以及區間動態規劃的鞏固掌握,附加值動態規劃的預處理,還有樹形動態規劃的初步。

最後就是離散思想的空間優化和高效,還有初等數論的學習。

這段時間是我學習oi的好機會,期望自己在高一的noip中拿到一等獎。對於集訓期間自己的表現滿意,每天認真的coding,在不懂的地方找同學老師討論,理解透徹。對自己的期許就是在oi路上繼續走下去,參加各大比賽,gdoi、gdkoi等,提高自己的思維高度,學習更多的演算法,不止步於聯賽。對於自己的許多不足,數論方面的薄弱,以及許多更高階資料結構,splay,平衡二叉樹等還需繼續加油學習。

iii

day1:線性表

棧結構:先進後出。

習題:gzoi 1097 括號匹配的檢查(初等棧),gzoi 1098 表示式計算(個位數的表示式)(高階)。

高精度:原理特別簡單,模擬手工運算。把模板背熟也很ok啊。

習題:gzoi 1008 【高精度與數制轉換】求x的p次方(不知道算不算高精度)。

歸併排序:拆分再拆分,最後組合。效率挺高

習題:gzoi 3427求逆序對

卡特蘭數:遞推實現,有可能會有高精度。第n個卡特蘭數為

綜合習題:gzoi 2273 number序列

day2:深搜基礎

深搜知識點:狀態的傳遞,dfs剪枝

習題(較水):gzoi 3429 營救 ,gzoi 1214        排序集合

習題(高階):gzoi 1027 駕車旅遊, gzoi 1208 關路燈

day3:廣搜基礎

廣搜知識點:學會使用stl的queue

難點:廣搜結合狀態壓縮,位運算

習題(較水):gzoi 1056 倒水,gzoi 1058 翻硬幣

習題(高階):gzoi 1240 黑白棋遊戲 (狀態壓縮&位運算),gzoi 2268 這不是錯誤,而是特點(搜的比較複雜)

day4:雜湊與廣搜

雜湊模板題:hash(理論基礎)

值得一做的題:gzoi 2182師生樹,gzoi 3730 馬步問題,gzoi 3494樹的最遠距離

毒瘤題:gzio 1241 魔板

day5:最小生成樹

最小生成樹知識點:

prim演算法:以乙個點為中心,將所與之相連的邊存入陣列(可用堆或優先佇列優化),再找出所有邊中的最短邊,擴張點,標記,在將與所有點相連未存入陣列的邊存入,重複擴張操作。

kruskal演算法:將所有邊按照邊權為關鍵字排序,從小到大判斷邊的兩段點是否連通。(可用並查集優化演算法)

(掌握堆以及stl的優先佇列的用法)

值得一刷的題:gzoi 3250 高速公路,gzoi 3723 arctic network,gzoi 3546 truck history,gzoi 3547 building roads。

day6:堆與並查集基礎

堆知識點:堆排序:建立乙個大根堆或者小根堆,將所有元素依次所有入隊並且shiftdown,輸出時每次取堆頂元素,將堆底元素提到堆頂並且shiftup。重複操作。

並查集知識點:查詢操作&優化:從當前節點出發到父親節點,將當前節點的父親賦值給經過的節點的父親。合併:將a和b合併,只需將b的根節點賦值給a的根節點的父親即可。(詳見gzoi 1520)

習題(堆):gzoi 1502 **,gzoi 1503 序列和的前n小元素 。

習題(並查集):gzoi 1520 家族(理論基礎)(模板題),gzoi 1521 銀河英雄傳說(noi2002)(毒瘤題)。

day7:最短路

最短路基礎演算法dijkstra, floyd, bellman-ford, spfa.

關於最短路的題,要水的就很水,要難的也很毒瘤,但是a了以後就會感覺都是水題。

模板題:gzoi 1043&1044 dijkstra& floyd。

水題:gzoi 1454 哈利波特與魔法石,gzoi 1903 災後重建,gzoi 3257 母牛跨欄。

稍微不水的題:gzoi 2103 訊息傳遞問題,gzoi 3630 party,gzoi 3509 邀請卡片。

值得一做的題:gzoi 3507 蟲洞(spfa),gzoi 2202 佳佳的魔法藥水,gzoi 2277 時間與空間之旅。

day8:拓撲排序與關鍵路徑

拓撲知識點:在乙個圖中將入度為0的點依次剔除,並且將與之相連的邊刪除。(模板在gzoi 2240)

習題(普通拓撲):gzoi 2240 單挑排名(模板),gzoi 2281 煩人的幻燈片。

習題(關鍵路徑):gzoi 3320 雜務,gzoi 2151 新校園

day9:動態規劃初步

知識點:揹包問題,求最大連續子串行和,求最長不下降序列,求最長公共子串行。

day10:經典動規問題

知識點:基礎動態規劃的變形以及理解

day11:動規加強

知識點:區間dp,樹形dp初步。

值得一做的題:gzoi 1084 糖果盒,gzoi 1088 郵局(ioi2000),gzoi 1089 多公尺諾骨牌(gdkoi2000),gzoi 1090 過橋問題(gdkoi2001),gzoi 1333 能量項鍊。

值得一做的樹形dp:gzoi 2184 聚會的快樂

day12:離散思想

知識點:點座標,位置的離散化。

習題:gzoi 1562 矩形面積,gzoi 1561 幻燈片,gzoi 1563 shaping regions形成的區域,gzoi 1564 水塔水位。

不怎麼毒瘤的毒瘤題:gzoi 1504 輪廓線(洛谷上的資料有誤,我的**gzoi上15ms)

day13:初等數論(蒟蒻最怕

初等數論基礎知識,素數問題,容斥原理,勾股定理,同餘定理,其它數論基礎。

day14:完結撒花!!!

暑假集訓總結

華信暑假集訓總結 暑假乙個月的總結 第一 就是不夠細心,關於這一點,在前兩次的總結都有提到,但是自己這次還是沒有改正過來,說明自己確實是粗心,不過在以後的學習過程中還是要克服這個問題!第二 自己寫的 結構很亂,模擬較多時,經常都會找不到自己在 定義的,這個又是在 寫的。所以在接下來的過程中,自己還是...

暑假集訓總結

暑假集訓這就結束了,這個暑假算是上學以來最充實的乙個暑假了,乙個暑假除了休息的兩個周之外,都在好好的學習,雖然每天從早坐到晚,一直在電腦面前冥思苦想,一遍遍的問自己 我到底錯在哪了 但還是有好多的收穫,學習到了知識,提高了自己寫 的能力,鍛鍊了思考問題的能力,而且還提前體驗一把碼農的感覺,近乙個月的...

暑假集訓總結

三十五天的集訓生活,伴隨著我們最後一次的個人賽的結束而結束了。這乙個多月的三點一線的生活,讓我再次感受到,為自己目標奮鬥的滿足感!1,集訓,讓我收穫的不僅僅是學習新的知識,還教會了我做人做事的大道理。從剛開始的分組賽到個人賽再到組隊賽,整個暑假集訓經歷了二十幾場比賽,很感激自己能一直遵守比賽規則到最...