傳送門
這道題并不是像普通的點分一樣現在根上加然后在兒子上把不合法的減去,而是直接只能查詢合法的,這種思維定式要改一改了。。。 剛開始一直在往這方面考慮。。直到看到有人說這道題和超級鋼琴那道題很像才受到啟發yy出這種不靠譜的的做法。。。
首先從當前根出發到每一個點都求出了一條路徑,那么怎么組合是合法的呢?就是路徑的兩個端點不能在根的同一個兒子里 是否在同一個兒子里可以用dfs序來區分,那么標記dfs序之后,每一個點能匹配的點就得到了一段連續的區間 如果直接將其展成序列的話,也就等價于每一個點對應一段合法的區間,然后求前m大 這就已經變成超級鋼琴那道題了 首先對于每一個點將其區間內的最大值求出,然后壓到堆里。每從堆中彈出一個點就將其對應的區間[l,loc-1][loc+1,r]都加進堆里,這樣不斷地彈m次就行了 時間復雜度
新聞熱點
疑難解答