zzuli 2520: 大小接近的点对
生活随笔
收集整理的這篇文章主要介紹了
zzuli 2520: 大小接近的点对
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目鏈接
題意
給你一棵樹,每個(gè)節(jié)點(diǎn)有一個(gè)權(quán)值。詢問每個(gè)節(jié)點(diǎn)有多少個(gè)點(diǎn)對,滿足以該節(jié)點(diǎn)為根節(jié)點(diǎn)uuu與它的所有子節(jié)點(diǎn)vvv,并且∣val[u]?val[v]∣≤K\left|val[u] - val[v] \right|\leq K∣val[u]?val[v]∣≤K
思路
- 比賽的時(shí)候想到一個(gè)思路:就是每次從葉子節(jié)點(diǎn)向根節(jié)點(diǎn)返回,每次把經(jīng)過的點(diǎn)加入集合,并滿足根節(jié)點(diǎn)的數(shù)量。沒時(shí)間寫了,回來實(shí)現(xiàn)一下發(fā)現(xiàn)超時(shí),就可能樹上有一個(gè)長鏈,在底層有很多葉子節(jié)點(diǎn),這樣每次相當(dāng)于便利了一棵樹N2N^2N2的復(fù)雜度。
- 再次向?qū)W長請教(學(xué)長好厲害啊^ _ ^)。
- 按照dfsdfsdfs順序維護(hù)一個(gè)樹狀數(shù)組,在剛進(jìn)入節(jié)點(diǎn)的時(shí)候先計(jì)算滿足根節(jié)點(diǎn)的個(gè)數(shù)tmptmptmp,然后對子節(jié)點(diǎn)進(jìn)行dfsdfsdfs,在回溯的時(shí)候插入當(dāng)前點(diǎn)再次統(tǒng)計(jì)滿足根節(jié)點(diǎn)的情況sumsumsum,那么sum?tmpsum - tmpsum?tmp就是當(dāng)前根節(jié)點(diǎn)能與子節(jié)點(diǎn)形成的點(diǎn)對,同時(shí)加上所有子樹的和就是當(dāng)前根節(jié)點(diǎn)的答案。
- 為什么在第一次進(jìn)入節(jié)點(diǎn)的時(shí)候統(tǒng)計(jì)答案呢?
剛進(jìn)入節(jié)點(diǎn)的時(shí)候,樹狀數(shù)組已經(jīng)插入了一些節(jié)點(diǎn)的值,而這些值并不是當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn),所以它不會對節(jié)點(diǎn)有貢獻(xiàn)。 - 權(quán)值很大需要離散。
總結(jié)
以上是生活随笔為你收集整理的zzuli 2520: 大小接近的点对的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: zzuli 2525: 咕咕的搜索序列
- 下一篇: NEUQ 2015: Bitmap(二维