1.14模拟赛
dp式子很好列
展開就是斜率優化。而且橫坐標單增,可以直接單調隊列
但是權值的偏序比較麻煩
兩種方法:
1.權值線段樹維護單調隊列
權值離散化。線段樹每個節點維護所代表的區間的凸包(單調隊列)
非常暴力,每次新加入一個點,就在對應位置插入,然后在logn個凸包上插入這個點。由于橫坐標單增,所以直接隊尾加入即可。
復雜度均攤O(logn)總復雜度O(nlogn)
deque慢死,vector還是慢死,可以開O(nlogn)長度的數組,然后給每個點分配所屬的內存。類似于分治的內存分配感覺
?
2.cdq
偏序問題,cdq可以利用下標解決一維
①但是最大的問題是,這個題的dp,按照一般的cdq(l,mid),cdq(mid+1,r)再處理當前,會后效性。正確性不對
②如果cdq(l,mid)處理當前,再cdq(mid+1,r);本身不能處理好偏序的問題,(不能自底向上歸并),暴力sort會TLE。復雜度不對
其實我們第二個方案只要知道當前的排序結果即可。
所以空跑一遍cdq,然后歸并,記錄每一層最終的排序結果。即可。
(考場上沒有想出來先空跑預處理一遍,然后logn層存下來。。。。。。浪費大量時間得到了暴力分的好成績)
?
T2:
變換可以考慮卷積
xor可以考慮拆位
多項式快速冪
?這個三次變兩次:這里有寫到:
傅里葉變換(FFT)學習筆記
?
因為其他的項系數都是偶數,直接為0
手玩觀察
每一項次數平方,系數也平方。就完成了多項式的平方
emm。。。其實這一句就夠了
但是不從拆位,快速冪,多項式平方的角度推過來,難以想到
暴力模擬:每次跳2^t步,可以找環,然后對于每個i,找所在環的前k個做xor和(前綴和優化)即可。
再加上快速冪的logT
?
T3:
f[i][j]表示,第i個位置放點,包括第i個位置放了j個點,最大收益
考慮區間貢獻怎樣不算重。
線段樹處理每個點的貢獻,到了區間左端點,把[1,l-1]加上c;到右端點的時候,把[1,l-1]減掉c
O(nmlogn)
?
?
T1的cdq經驗不足啊,,,總是預處理有的時候想不到。。總空間O(nlogn)預處理還是很常見的。。。
轉載于:https://www.cnblogs.com/Miracevin/p/10267151.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
- 上一篇: 2019年10个最受欢迎的JavaScr
- 下一篇: 厉害了!用 JS 实现人脑和计算机交互