線段樹的變形真的很經典
這題要做的就是我們希望可以把 距離 <= r 的區段
重量都小於等於力量的物質挑出來,放入queue裡
每一個物質都有兩個變量,距離以及重量
要對 <= 某距離內,找出 <= 某重量 的物質
這時,我們要用到一個很基本的概念:區段樹
就是一個線段樹,但是他的每一個節點,不是單單包含一個值
而是包含了這個區段的所有元素!
這麼看的話,感覺還挺崩潰的,但是可以知道每個元素只會被lgn個包含
所以元素數量是 NlgN ,非常的好用
有了這個方向之後,是否就很簡單了呢?答案是:Yes
只要讓那個區段的值都是由小排到大的,之後在query時
就從前面開始取出即可
(我是用Set去讓他由小到大的,整體複雜度nlg^2n,但只要質量小的放到質量大的,就可以用nlgn的時間,解出來了)
想要看code,可以直接去codeforces,上面找。
沒有留言:
張貼留言