Educational Codeforces Round 81 (Rated for Div. 2) E. Permutation Separation 线段树 + dp
傳送門
文章目錄
- 題意:
- 思路:
題意:
給你一個(gè)打亂的排列,每個(gè)位置都各有一個(gè)價(jià)值,讓你選擇一個(gè)分界點(diǎn),分成p1,p2,...,prp_1,p_2,...,p_rp1?,p2?,...,pr?和pr+1,...,pn?1,pnp_{r+1},...,p_{n-1},p_{n}pr+1?,...,pn?1?,pn?,兩部分非空,可以將某一邊的數(shù)花費(fèi)代價(jià)aia_iai?移動(dòng)到另一邊,當(dāng)左邊所有數(shù)都小于右邊或者某一邊為空的時(shí)候,符合條件,求符合條件的時(shí)候的最小代價(jià)。
思路:
先考慮暴力怎么寫。
定義f[i][j]f[i][j]f[i][j]表示以iii為分割點(diǎn),[1,i][1,i][1,i]在左邊,[i+1,n][i+1,n][i+1,n]在右邊,讓后通過移動(dòng)使得a[1,i]<=j,a[i+1,n]>ja_{[1,i]}<=j,a_{[i+1,n]}>ja[1,i]?<=j,a[i+1,n]?>j的最小代價(jià)是f[i][j]f[i][j]f[i][j],初始狀態(tài)f[0][k]=∑i=1kbif[0][k]=\sum _{i=1}^{k}b_if[0][k]=∑i=1k?bi?(注意bbb是排序后iii這個(gè)位置的花費(fèi)),轉(zhuǎn)移也比較好寫了:f[i][k]=f[i?1][k]?a[i]k∈[p[i],n]f[i][k]=f[i-1][k]-a[i] \ \ k\in [p[i],n]f[i][k]=f[i?1][k]?a[i]??k∈[p[i],n]f[i][k]=f[i?1][k]+a[i]k∈[1,p[i]?1]f[i][k]=f[i-1][k]+a[i] \ \ k\in [1,p[i]-1]f[i][k]=f[i?1][k]+a[i]??k∈[1,p[i]?1]
對(duì)于第一個(gè)方程的解釋為當(dāng)k∈[p[i],n]k\in [p[i],n]k∈[p[i],n]的時(shí)候,原本iii需要花費(fèi)a[i]a[i]a[i]移動(dòng)到左邊,但是由于分割點(diǎn)右移,所以不需要花費(fèi)a[i]a[i]a[i],所以應(yīng)該減掉。
對(duì)于第二個(gè)方程解釋為當(dāng)k∈[1,p[i]?1]k\in [1,p[i]-1]k∈[1,p[i]?1]的時(shí)候,原本iii不需要花費(fèi)a[i]a[i]a[i]到右邊,因?yàn)楸緛砭驮谟疫?#xff0c;但是分割點(diǎn)右移之后他到左邊了,所以需要花費(fèi)a[i]a[i]a[i],應(yīng)該加上。
但是這個(gè)方程的轉(zhuǎn)移是O(N2)O(N^2)O(N2)的,我們考慮用線段樹來實(shí)現(xiàn)區(qū)間加,讓后維護(hù)一個(gè)minminmin,最后直接取tr[1].mintr[1].mintr[1].min即可。
總結(jié)
以上是生活随笔為你收集整理的Educational Codeforces Round 81 (Rated for Div. 2) E. Permutation Separation 线段树 + dp的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果泡酸奶有什么功效
- 下一篇: Codeforces Round #71