“對。”唐糖點頭,“而且因為每一層的合併操作是O(1)的,總的時間複雜度反而比樸素DP的O(n×W)更低,降到了O(n log W)。”
林幀目光掃過旁邊的周揚和陳雨欣,語氣很隨意:“你們倆也別光聽著,有什麼問題儘管問。”
周揚握著筆的手頓了一下,他剛才還在心裡琢磨唐糖講的複雜度分析。
他研二了,在實驗室待了快兩年,帶過兩個本科生的畢設,自認在組裡演算法功底算拔尖的。
上週組會剛給研一的師弟師妹講過滑動視窗DP的最佳化思路,當時還覺得自己把狀態壓縮講得夠透了。
可現在聽唐糖開口,她講演算法邏輯比他們組上週做組會彙報的研一還利索。
連複雜度分析都卡得嚴絲合縫,每個邊界條件都提前點到了。
他有點不服氣,又有點好奇。
清了清嗓子,指著唐糖螢幕上的虛擬碼:“學妹,你這個pressed【level】【i】的儲存方式,如果視窗大小是奇數怎麼辦?”
“比如W=7,第三層要存8個狀態的最優值,可窗口裡只有7個元素,多出來的那個位置怎麼處理?”
這個問題問得很實在,周揚自己上週跑實驗的時候就踩過這個坑。
當時為了處理非2冪次的視窗,寫了快五十行程式碼做特殊判斷,結果還漏了個邊界情況,跑實驗的時候報了一晚上錯。
他盯著唐糖,想看看這個大一新生怎麼接。
唐糖看了一眼他指的位置,幾乎沒怎麼思考就開口:“用二進位制拆分。任何正整數都可以拆成若干個2的冪次之和。”
“7可以拆成4+2+1,所以查1到7的最優值,就用1-4、5-6、7這三個區間的最優值合併,三次O(1)操作就能得到結果,不需要額外處理空位置。”
周揚愣了一下。
他看著唐糖輕描淡寫說出來的二進位制拆分,耳根悄悄泛起點薄紅,這次不是因為不服氣,是因為……有點慚愧。
陳雨欣推了推滑到鼻樑的眼鏡:“那如果視窗是動態變化的呢?”
“比如每一步視窗大小都不一樣,你的壓縮結構還能複用嗎?”
“總不能每一步都重新預處理一遍吧?那樣時間複雜度不就又回去了?”
陳雨欣做即時查詢最佳化卡了半個月的視窗狀態冗餘問題,核心就是動態視窗的大小變化導致預處理結果失效。
她之前在論文裡看到的“分塊思想”雖然能解決這個問題,但表述晦澀,工程實現起來特別複雜。
她有點好奇,唐糖這個分層壓縮的思路,能不能解決這個動態變化的問題。
唐糖盯著螢幕上的虛擬碼,眉頭微微皺了一下。
辦公室裡安靜得周揚甚至能聽見自己的心跳聲。
他有點緊張,怕唐糖答不上來,又怕她答上來了,顯得自己這兩年白讀了。
這個問題,唐糖之前沒想過。
她腦子裡開始快速推演。
……非除……了效失就果結的理預前之那……變著跟要也level^2 = pets長步的層一每著味意……化變小大窗視
”……大變會又銷開間空樣那但“,說慢慢”。小大窗視的能可有所理預以可“
”。層幾那的響影算計新重,候時的化變正真小大窗視在只,式方的新更懶用,者或“
”。新更再候時的詢查要需正真等,來下記化變把先,式方的記標懶用以可們我,的立獨是算計的層一每為因且而“
”。)W gol(O是還度雜複的化變窗視次每,來下攤均樣這“
。眼一幀林了看頭抬欣雨陳
。住不藏都藏賞讚的里神眼,笑著帶角,上背椅在靠正幀林
。了然釋點有然突欣雨陳
。的飯碗這吃是就生天人些有,道知才在現,害厲很案專做幀林著跟能就一研己自得覺還前之
。點了點置位個某上圖在尖筆,圖意示的單簡個一了畫上紙在,筆的上桌起拿幀林
”。想想再以可你,現實麼怎過不“,說他”。的對是路思的新更懶“
”。題問節細是都些這,響影層些哪斷判麼怎候時的新更,存麼怎記標懶如比“
”。向方究研的好很個是這“:真認點著帶裡氣語,糖唐看眼抬,頓了頓他
。氣口了鬆糖唐,值緒點7892的賬又上板面統系眼了看
。了過是算,關一這己自道知








