【BZOJ4771】七彩樹
題解:
首先扯一些並沒有用的
如果問題是在序列上的怎麽做
跟bzoj那道超級鋼琴的加強版要求數字不同那個原理一樣
主席樹掃描過去 找到同一種顏色的前驅 這一段+1就可以了
擴展到樹上
如果求鏈上的顏色個數,套上樹剖和序列就一樣了
另外找前驅在樹上是不能用一個數組記錄的
所以也得用主席樹實現(維護每個顏色上一次出現的位置)
另外如果是查詢子樹顏色個數在線
我們可以用dfs序把樹變序列
然後跟上面一樣
如果離線
直接線段樹啟發式合並
然後回到這道題。。
上面的方法應該一個都不行(至少我不會)
不過正解也是很簡單的
既然考慮每個點的子樹不可行
我們可以考慮每個點對哪些點的子樹有貢獻
於是算法就出來了我們可以對每個點分開做
然後樹鏈求並(我好像只會用虛樹來求)
現在這題加了一個限制
線段樹修改改成主席樹就好了
【BZOJ4771】七彩樹
相關推薦
【BZOJ4771】七彩樹 主席樹+樹鏈的並
iter 有一個 inpu ont 實的 print algorithm 包含 char 【BZOJ4771】七彩樹 Description 給定一棵n個點的有根樹,編號依次為1到n,其中1號點是根節點。每個節點都被染上了某一種顏色,其中第i個節點的顏色為c[i]。
【BZOJ4771】七彩樹
離線 有用 掃描 col 如果 超級 不能 不同 問題 題解: 首先扯一些並沒有用的 如果問題是在序列上的怎麽做 跟bzoj那道超級鋼琴的加強版要求數字不同那個原理一樣 主席樹掃描過去 找到同一種顏色的前驅 這一段+1就可以了 擴展到樹上 如果求鏈上的顏色個數,
P3372 【模板】線段樹 1
load color 求和 整數 數字 amp article http cst 題目描述 如題,已知一個數列,你需要進行下面兩種操作: 1.將某區間每一個數加上x 2.求出某區間每一個數的和 輸入輸出格式 輸入格式: 第一行包含兩個整數N、M,分別表示該數
【Python】決策樹的python實現
uia bmp say 不知道 times otto outlook lru bgm 【Python】決策樹的python實現 2016-12-08 數據分析師Nieson 1. 決策樹是什麽? 簡單地理解,就是根據一些 feature 進行分類,每個節點提一個問
【bzoj2836】魔法樹 樹鏈剖分+線段樹
urn fin pan online char font -s class efi 題目描述 輸入 輸出 樣例輸入 4 0 1 1 2 2 3 4 Add 1 3 1 Query 0 Query 1 Query 2 樣例輸出
[洛谷3373]【模板】線段樹 2
兩個 cstring tchar int() 維護 string max nbsp 線段 思路: 線段樹。同時維護兩個 lazy tag ,一個維護乘,一個維護加。根據加法結合律,可以得出:當同一個結點進行兩次加操作時,新的標記等於兩次標記之和。根據乘法結合律,可以得出:
P3373 【模板】線段樹 2 區間求和 區間乘 區間加
std 數列 cst printf int img ostream string uil 題目描述 如題,已知一個數列,你需要進行下面兩種操作: 1.將某區間每一個數加上x 2.將某區間每一個數乘上x 3.求出某區間每一個數的和 輸入輸出格式 輸入格
【bzoj4785】[Zjoi2017]樹狀數組 線段樹套線段樹
奇怪 原因 tdi function 數字 二進制位 操作 接下來 還需 題目描述 漆黑的晚上,九條可憐躺在床上輾轉反側。難以入眠的她想起了若幹年前她的一次悲慘的OI 比賽經歷。那是一道基礎的樹狀數組題。給出一個長度為 n 的數組 A,初始值都為 0,接下來進行 m 次操
【BZOJ4785】[Zjoi2017]樹狀數組 樹套樹(二維線段樹)
這也 現在 ont 平面 nbsp -s mil 比賽 turn 【BZOJ4785】[Zjoi2017]樹狀數組 Description 漆黑的晚上,九條可憐躺在床上輾轉反側。難以入眠的她想起了若幹年前她的一次悲慘的OI 比賽經歷。那是一道基礎的樹狀數組題。給出
線段樹區間修改 P3372 【模板】線段樹 1
print alt namespace clu 格式 getch 輸出格式 包含 模板 題目描述 如題,已知一個數列,你需要進行下面兩種操作: 1.將某區間每一個數加上x 2.求出某區間每一個數的和 輸入輸出格式 輸入格式: 第一行包含兩個整數N、M,分別表示該數
【原創】洛谷 LUOGU P3373 【模板】線段樹2
取模 file 需要 code ace highlight dig org zh-cn P3373 【模板】線段樹 2 題目描述 如題,已知一個數列,你需要進行下面兩種操作: 1.將某區間每一個數加上x 2.將某區間每一個數乘上x 3.求出
【codevs1082】線段樹練習 3
adl for while small get color ace str 所有 題目描述 Description 給你N個數,有兩種操作: 1:給區間[a,b]的所有數增加X 2:詢問區間[a,b]的數的和。 輸入描述 Input Description 第一
【洛谷P3372】【模板】線段樹 1
return blog 限制 空格 ges 進行 esp -m node 題目描述 如題,已知一個數列,你需要進行下面兩種操作: 1.將某區間每一個數加上x 2.求出某區間每一個數的和 輸入輸出格式 輸入格式: 第一行包含兩個整數N、M,分別表示該數列數字的個數和操作的
【BZOJ4127】Abs 樹鏈剖分+線段樹
include modify 題目 etc soft upd clu set mem 【BZOJ4127】Abs Description 給定一棵樹,設計數據結構支持以下操作 1 u v d 表示將路徑 (u,v) 加d 2 u v
【BZOJ3319】黑白樹 並查集
維護 2個 bzoj3 printf highlight 集合 else cst find 【BZOJ3319】黑白樹 Description 給定一棵樹,邊的顏色為黑或白,初始時全部為白色。維護兩個操作:1.查詢u到根路徑上的第一條黑色邊的標號。2.將u到v
【BZOJ3302】[Shoi2005]樹的雙中心 DFS
ace src 表示 之間 如何 移動 sin http 我們 【BZOJ3302】[Shoi2005]樹的雙中心 Description Input 第一行為N,1<N<=50000,表示樹的節點數目,樹的節點從1到N編號。接下來N-1行
【BZOJ4817】[Sdoi2017]樹點塗色 LCT+線段樹
sum urn using sof 兩個 如果 std bsp char 【BZOJ4817】[Sdoi2017]樹點塗色 Description Bob有一棵n個點的有根樹,其中1號點是根節點。Bob在每個點上塗了顏色,並且每個點上的顏色不同。定義一條路徑的權值是
【BZOJ4712】洪水 樹鏈剖分優化DP+線段樹
表示 他還 efi 父親 管理員 out 接下來 到你 head 【BZOJ4712】洪水 Description 小A走到一個山腳下,準備給自己造一個小屋。這時候,小A的朋友(op,又叫管理員)打開了創造模式,然後飛到山頂放了格水。於是小A面前出現了一個瀑布。作為
【bzoj1103】【POI2007】【大都市】(樹狀數組+差分)
sin 騎摩托車 為什麽 ons con size hint ont iostream 在經濟全球化浪潮的影響下,習慣於漫步在清晨的鄉間小路的郵遞員Blue Mary也開始騎著摩托車傳遞郵件了。不過,她經常回憶起以前在鄉間漫步的情景。昔日,鄉下有依次編號為1..n的n個小村
luogu P3373 【模板】線段樹 2
strong put || www pri 模板 add clu pro 原題鏈接:https://www.luogu.org/problem/show?pid=3373 其實也沒啥好說的,就是註意一下乘法標記會影響到加法標記 #include<cstdio