1. 程式人生 > >20181020考試記錄

20181020考試記錄

題目pdf

T1:

考場上被讀題搞蒙,最後才寫,但是盡然AC了(只有一個任務點)

最後發現就是將去時的秒數加上回來的秒數除以二即可

易證

主要考的是讀入優化

怎麼處理掉每行後面的(+1 +2)

read瞎搞搞即可

 

T2:

考場上腦袋抽筋想著用字尾和維護

但是並沒有打完

最後棄療

發現自己想少了

不僅要維護一維字首和,還要維護二維字首和

然後就建一棵線段樹去維護一維與二位

然後詢問的是一次函式(n,n-1,n-2,,,,,1)

所以詢問是不僅加上一些二維字首和也要加上一些一維字首和

eg:

當一個節點存的是3~6時

一維字首和為a3+a4+a5+a6

而二維字首和為:

4a3+3a4+2a5+1a6

而要詢問3~7時

二維字首和是不是還要再加上一個一維字首和,然後再加上a7

因為詢問當時5a3+4a4+3a5+2a6+a7

其他的也是這樣

時間複雜度:O(MlogN)

一個比較優秀的演算法(根號級)

 

分塊大法

考場上我也想過

但是因為沒有想到要把那幾個都存上

導致也沒有寫

但是盡然有人寫了

也是線段樹的思想

去維護

瞎搞搞整塊與散塊

就行了

時間複雜度:O(M*sqrt(N))

T3:

認為是這套卷子中最水的一道題

相鄰兩個合併,想到什麼

區間dp

然後發現左手啥用都沒有,只有右手絕對值之差即可

然後設dp[i][j]為從i~j合併時的最小值

所以dp[i][j]=min(dp[i][k],dp[k+1][j]+abs(r[j]-r[k]))   (i<=k<j)

複雜度:O(N^3)

 

score:100+50+100=250