7.22——資料結構
上課+做題
首先講的是樹剖。樹剖核心就是根據樹的一些特徵(如深度、最大子樹),將一棵樹拆分成 \(\log{n}\) 個連續的樹鏈,使得樹上問題轉化為線性問題,最後再用資料結構維護區間或是直接 dp 之類。由於我之前就比較熟悉樹剖、還寫過一些題,所以聽得非常輕鬆,但是水平還未達到能隨便切紫題的高度。當天下午我也寫了幾道題,估計是已經完全掌握,做 NOIP 的樹剖題感覺沒有什麼太大問題。
之後還講了 cdq 分治。這是一種離線演算法。當我們遇到不止一個限制求 max、sum 等資訊時,我們可以構造加尋找出三種限制,將其轉化為三維偏序,然後 cdq 分治。這一演算法主要就是分治套樹狀陣列,主要是分治,在分治過程中用樹狀陣列統計答案。程式碼很簡單,能夠輕易實現。講的一些練習題都不是特別難,只是需要你細心觀察、發現性質,然後找出三種限制,但是程式碼實現需要注意許多細節,故我寫題較慢。
最後講了整體二分,就是把多個詢問同時進行二分,和普通二分沒有太大區別,但題我還一道沒寫,不清楚對於一道題具體如何實現,之後需要補上。
總結
這天的課程對我來說比較輕鬆,在課上能緊跟學長思路,還能場切一點題,還算不錯。樹剖已經基本沒有問題,之後 cdq 還可以再自己擴充,整體二分必須寫一點題理清程式碼實現細節。
7.23~7.25——數學、多項式
上課
多項式接著上次 NTT 之後求多項式其他東西繼續講。應用大部分不算難,能夠自己推出來,只有多項式除法需要構造沒想出來。
之後是生成函式。這個東西就是對於一個數列 \(A\),構造一個函式 \(F(x)=\sum a_ix^i\)。然後 \(x^i\) 沒有實際意義,看成佔位符就行。後來講了兩道生成函式的題,但我還是沒太搞懂它的應用,感覺就只是對於揹包問題求解方案數有奇效,其他應用未知。
後一天講的是線性代數。學長透過數形結合的思想,從最基礎的向量開始講了線性相關內容、行列式、矩陣最後講到特徵向量與特徵值。這一天的學習,我明白了向量線上性代數中的基礎性,理清了線性變換與矩陣乘法、行列式等之間的內在關係。之前雖然之前聽過一次印象不深,可我還是聽得很輕鬆。學了一上午後就感覺特別神奇,使我對線性代數的興趣增大。
最後一天講基礎數論。確實很基礎!講了模數有關的大部分內容、篩法、CRT 以及這些東西的推導過程,現在均完全理解且能自行推導。
做題
多項式的題就是以 FFT(或 NTT)為主進行加工。操作是一層套一層,程式碼看著非常簡單,實際寫起不難但耗時間,要處理一定的細節。數學題程式碼量小,只要搞懂題意找到解法就是7 8分鐘的事。
總結
之前聽數學都沒有把東西背後的原理弄懂,所以結論記不住,更別談應用。這次過完就能夠熟練掌握所講內容,知道了知識的內因,應用也好起來了,只是還需要多見一點不同的題就行。
7.26~7.27——DP
上課
第一天簡單。我唯一對狀壓不算特別熟練,當天也沒有寫題,準備馬上補。
第二天難。計數題的狀態設計有時候都是個問題,我感覺到題見太少了、思考量嚴重不足,總覺得思考時力不從心、有時面對問題會不知所措。就覺得沒有找到做題的技巧,思考時總覺得沒有太多方向感,而且很死板,總往一個方向使勁想。我覺得我的狀態設計能力還有很大提升空間。期望dp 就是根據期望的性質化簡式子,寫成線性遞推方程,如果有初值就直接做,否則就高斯消元。插頭dp 聽懂了,但是程式碼實現還是比較困難,之後要寫一寫。
寫題
只寫了期望的題,計數題寫的少,插頭dp還沒開動,但是就算寫的慢還是堅決自己手推,不去看題解。
總結
這段時間的課程對我來說都還好,除了最後一天的 dp 想不出來幾道題,其他時候都算輕鬆。下午也有認真在做題,就是晚上還可以再稍微寫寫總結就更好了。那天聽了付偉吉的講話,我也準備開始準備一個本子每天寫點東西。並且之後還向他詢問了一些東西,個人感覺受益匪淺。中午休息時可以學習其他人看看書,而不是在手機上刷影片。
機房氛圍也挺好的,就是有時候不算特別安靜,一定程度上會影響我的效率,我也要剋制住自己,不要去做過多無意義的事情,最後就是準備換一下座位,坐到教師機前面的那個電腦那裡,既是為了督促自己,讓自己更加認真地聽課,也是方便與學長交流自己的思考,還能避免和yt、wyc或者其他人進行過多討論。