題解 P4416 【[COCI2017-2018#1] Plahte】
阿新 • • 發佈:2020-09-20
珂朵莉樹吼哇,我永遠喜歡珂朵莉.jpg
Solution [COCI2017-2018#1] Plahte
題目大意:給定\(n\)個互不相交(可能包含)的矩形,以及\(m\)個有顏色的點。詢問每個矩形內部的點有多少種不同的顏色
dsu on tree,掃描線
分析:關鍵的條件是互不包含,也就是我們把每個矩形和最小的包含它的矩形連邊,那麼會形成一棵森林。
這個可以用掃描線來完成,從左往右掃
-
如果一個線段\([l,r]\)是矩形的左邊界,那麼就將這個矩形和原來\([l,r]\)內代表的矩形連邊。之後我們將\([l,r]\)賦值為該矩形
-
如果一個線段\([l,r]\)是矩形的右邊界,那麼我們就將\([l,r]\)
點當做矩形處理即可,注意邊界問題。如果點和左邊界橫座標相同,優先處理左邊界
維護線段樹(珂朵莉樹好寫.jpg)
這樣我們建出一棵樹,直接dsu on tree即可
程式碼使用了右值引用等特性,請-std=c++11