天天愛跑步——樹上差分
先來一道簡化版:
關聯點 2
? 給出一棵二叉樹,每個點有點權 ????
? 如果 ?? 在 ?? 的左(右)子樹中,且 ?? 到 ?? 的距離為 ????,則稱 ??
為 ?? 的左(右)關聯點
? 求每個點的左、右關聯點個數
? ?? ≤ 10^6
子樹內距離根為x深度的點有多少個
不能爆搜。
但是,可以利用dfs的性質,便利完a的子樹,才會出來。
所以,可以用一個全局數組記錄dep[i]表示深度為i的點出現了幾次
進入x,記錄dep[dep[x]+va]個數=old,然後把dep[dep[x]]++
回溯的時候,把new-old即可求出答案。
天天愛跑步——樹上差分
相關推薦
洛谷P1600 天天愛跑步——樹上差分
iostream pac Go spa CM int val stream OS 題目:https://www.luogu.org/problemnew/show/P1600 看博客:https://blog.csdn.net/clove_unique/article/de
[Noip2016]天天愛跑步 樹上差分
stact 0ms 情況下 類型 輸出 記錄 一行 push pri $ \rightarrow $ 戳我進洛谷原題** $ \rightarrow $ 戳我進BZOJ原題** 天天愛跑步 時空限制 \quad 2000ms / 512MB 題目描述 小c同學認為跑步非
NOIP2016 天天愛跑步 (樹上差分+dfs)
產生 using cto continue 有一個 swa http get bug 題目大意:給你一顆樹,樹上每個點都有一個觀察員,他們僅會在 w[i] 時刻出現,觀察正在跑步的玩家 一共有m個玩家,他們分別從節點 s[i] 同時出發,以每秒跑一條邊的速度,沿著到 t[i
bzoj4719: [Noip2016]天天愛跑步 樹上差分
-a 用兩個 output 玩家 name cst while con bzoj Description 小c同學認為跑步非常有趣,於是決定制作一款叫做《天天愛跑步》的遊戲。?天天愛跑步?是一個養成類遊戲,需要 玩家每天按時上線,完成打卡任務。這個遊戲的地圖可以看作一一棵包
天天愛跑步——樹上差分
但是 -o 回溯 跑步 bsp 出現 ont dep size 先來一道簡化版: 關聯點 2? 給出一棵二叉樹,每個點有點權 ????? 如果 ?? 在 ?? 的左(右)子樹中,且 ?? 到 ?? 的距離為 ????,則稱 ??為 ?? 的左(右)關聯點? 求每個點的左、右
NOIP2016 day1T2--BZOJ4719 天天愛跑步--LCA+差分
Description 小c同學認為跑步非常有趣,於是決定製作一款叫做《天天愛跑步》的遊戲。?天天愛跑步?是一個養成類遊戲,需要 玩家每天按時上線,完成打卡任務。這個遊戲的地圖可以看作一一棵包含 N個結點和N-1 條邊的樹, 每條邊連線兩 個結點,且任意兩
【LCA+樹上差分】天天愛跑步
blog 分支 div fin out 答案 簡單 printf 但是 困擾我半年多的題終於做出來了 一開始我的做法是想在回溯的時候統計答案,但是各個分支之間又會相互影響,然後就不會做了 看完別人的題解後發現用桶的前後狀態做差來統計答案更簡單 1 #include &l
[luogu1600 noip2016] 天天愛跑步 (樹上差分)
分享圖片 etc tdi 制作 name cout gist clas 輸出 題目描述 小c同學認為跑步非常有趣,於是決定制作一款叫做《天天愛跑步》的遊戲。《天天愛跑步》是一個養成類遊戲,需要玩家每天按時上線,完成打卡任務。 這個遊戲的地圖可以看作一一棵包含 n個結點和 n
【NOIP2016提高】天天愛跑步的解析(樹上差分+LCA+桶)
題目:luogu1600. 題目大意:給定一棵樹和樹上每個節點的,現在給出m對和,表示從到會有一個人沿樹上的路徑走過,並且這個人每秒移動到下一個點.現在每個人都在時刻0走出,詢問每一個點i,請你輸出第時刻有多少人會在點i. 這道題真的是史上最難的NOIP題啊... 我們現在一步步分析
【NIOIP2016提高】天天愛跑步(LCA+樹上差分)
近幾年複賽最難的樹上問題了。 幾個月前做是參照題解的方法,用了可持久化線段樹在樹上無腦維護和統計。 當時的做法早已忘記,於是回過來自己做了做,其實遠沒有那麼難做,只要發現一些奇妙的性質。 對於一個玩家s->t,如圖。 對於圖中a點的觀察員存在這樣一個式子
2018.11.09【NOIP2016】【洛谷P1600】天天愛跑步(樹上差分)
傳送門 解析: 據說這是NOIP歷年最難一道題。。但是真的沒有寶藏難啊我覺得。。。 思路: 答案分兩類統計,一種是子樹中過來,一種是其他地方過來。那麼路徑就被拆分成兩部分了,一部分是S−>lcaS->lcaS−>lca,一部分
【NOIP2016提高組T2】天天愛跑步-倍增LCA+樹上差分
測試地址:天天愛跑步 做法:這裡轉載一下我看的題解:點這裡,這裡面對於整個題的做法應該寫的很明確了,這裡就不再贅述了。我的做法是實時用倍增求出路徑兩點的LCA(當然也可以離線用Tarjan做,貌似快一點),然後用類似鄰接表的連結串列結構儲存上面題解裡面的“人”,結構體裡有四
NOIP2016天天愛跑步——LCA+樹上差分
Description 小c同學認為跑步非常有趣,於是決定製作一款叫做《天天愛跑步》的遊戲。?天天愛跑步?是一個養成類遊戲,需要玩家每天按時上線,完成打卡任務。這個遊戲的地圖可以看作一一棵包含 N個結點和N-1 條邊的樹, 每條邊連線兩個結點,且任意兩個結點存
[Noip2016]天天愛跑步 LCA+樹上差分
—————————————- 概述 題目大意如下: 給定一棵n個點的樹,每一個點有一個點權w[i],再告訴你m條路徑的起點u和終點v。對於一條路徑,假如路徑上某一點x到起點u的距離等於w[x],那麼x的貢獻加1。最後求每一個點的貢獻。(1≤n,m≤30
bzoj4719 [Noip2016]天天愛跑步(樹+lca+樹上差分+思路題)
進入bzoj法眼的noip(lus)題hh。題解太麻煩啦。。。不寫啦。。。就體會一下思想:要是對於每條路徑操作,看他會影響哪些點的貢獻,鐵鐵的會t。所以考慮怎樣的一條路徑會對一個點產生貢獻,先討論簡化版的鏈的情況,發現要討論左右。結合另外兩個部分分,感覺就是把路
NOIP2016 天天愛跑步 (LCA,樹上差分)
Description 小c同學認為跑步非常有趣,於是決定製作一款叫做《天天愛跑步》的遊戲。«天天愛跑步»是一個養成類遊戲,需要玩家每天按時上線,完成打卡任務。 這個遊戲的地圖可以看作一一棵包含n個結點和n−1條邊的樹, 每條邊連線兩個結點,且任意兩個結點存
「洛谷1600」「NOIP2016提高組」天天愛跑步【樹上差分】
題目 給定 nod new nlogn 否則 top class 分享圖片 閑話 為了理清這道題目的思路,我是邊寫博客邊做題的,qwq。 題目鏈接 洛谷 題解 首先對變量進行聲明 dep[i] 表示i號節點的深度,是到根節點的深度 w[i] 表示i號觀測點觀測的時間
[NOIP2016 DAY1 T2]天天愛跑步-[差分+線段樹合並][解題報告]
rip top 偏移 digi http n-1 sdi git += [NOIP2016 DAY1 T2]天天愛跑步 題面: B【NOIP2016 DAY1】天天愛跑步 時間限制 : - MS 空間限制 : 565536 KB 評測說明 : 2s D
洛谷P1600 天天愛跑步(差分 LCA 桶)
題意 題目連結 Sol 一步一步的來考慮 \(25 \%\):直接\(O(nm)\)的暴力 鏈的情況:維護兩個差分陣列,分別表示從左向右和從右向左的貢獻, \(S_i = 1\):統計每個點的子樹內有多少起點即可 \(T_i = 1\):同樣還是差分的思想,由於每個點 能對其產生的點的深度是相同
NOIP2016天天愛跑步 題解報告【lca+樹上統計(桶)】
題目描述 小c同學認為跑步非常有趣,於是決定製作一款叫做《天天愛跑步》的遊戲。«天天愛跑步»是一個養成類遊戲,需要玩家每天按時上線,完成打卡任務。 這個遊戲的地圖可以看作一一棵包含 nn個結點和 n-1n−1條邊的樹, 每條邊連線兩個結點,且任意兩個結點存在一條