城堡迷阵,51nod1527,贪心
正題
做法就是設f[i]f[i]f[i]表示i的子樹的答案,sum[i]sum[i]sum[i]為iii的(子樹的邊權和+i到父親的邊權)?2*2?2,sz[i]sz[i]sz[i]表示iii子樹的的大小。
那么若給xxx的子樹一個遍歷順序aaa,那么就有:f[i]=∑i=1sonif[ai]+(∑j=1i?1sum[aj])sz[ai]f[i]=\sum_{i=1}^{son_i} f[a_i]+(\sum_{j=1}^{i-1} sum[a_j])sz[a_i] f[i]=i=1∑soni??f[ai?]+(j=1∑i?1?sum[aj?])sz[ai?]
發現前面這個fff是固定的,可以不用管。
對于后面的東西若sum[ai]sz[ai]>sum[ai+1]sz[ai+1\frac{sum[a_i]}{sz[a_i]}>\frac{sum[a_{i+1}]}{sz[a_{i+1}}sz[ai?]sum[ai?]?>sz[ai+1?sum[ai+1?]?,那么更換兩個位置產生的上面式子的差值就是sum[ai+1]sz[ai]?sum[ai]sz[ai+1]<0sum[a_{i+1}]sz[a_i]-sum[a_i]sz[a_{i+1}]<0sum[ai+1?]sz[ai?]?sum[ai?]sz[ai+1?]<0比原先代價要小。,更換了更優,那么就是按照sum[x]sz[x]\frac{sum[x]}{sz[x]}sz[x]sum[x]?來排序。
總結
以上是生活随笔為你收集整理的城堡迷阵,51nod1527,贪心的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10局域网中设置共享文件夹
- 下一篇: 安全研究人员发现新的Android恶意软