沒找到傳送門(這是校內的)
題意:給一棵樹,多次詢問編號在l到r中的點組成的連通塊個數
考試的時候一直在想奇怪的做法,用的都是樹上維護的知識(比如已經被某c姓神仙卡掉的虛樹+樹剖+二分)
其實這道題根本不需要樹上的知識
首先要知道乙個區間的連通塊個數等於點數-邊數(無重邊自環的情況)
然後問題就變成了要求端點乙個區間內的邊數了,這是乙個二維偏序問題
所以先對一維進行排序,另一維用樹狀陣列查詢就a了
code:
#include
using
namespace std;
inline
intread()
while
(isdigit
(ch)
)return res*f;
}const
int n=
200005
;int n,q,tr[n]
,ans[n]
;struct seqe[n]
,s[n]
;inline
bool
cmp(seq x,seq y)
inline
void
add(
int k,
int v)
inline
intask
(int k)
intmain()
sort
(e+1
,e+n,cmp)
;for
(int i=
1;i<=q;i++
) s[i]
.l=read()
,s[i]
.r=read()
,s[i]
.id=i;
sort
(s+1
,s+q+
1,cmp)
;int now=1;
for(
int i=
1;i<=q;i++
)for
(int i=
1;i<=q;i++
) cout<<<
"\n"
;return0;
}
飄雪聖域 樹狀陣列 二維偏序
首 先要 知道 首先要知道 首先要知道 若給定乙個區間 l,r l,r l,r 設一條邊的小端點為 u uu,大端點為 vvv,滿足條件 l u andv rl le u and v le r l uand v r 的邊數為 num numnu m,則聯通塊數量為 r l 1 n umr l 1 n...
飄雪聖域(icekingdom)
iceprincess 1968 和iceprince 1968 長大了,他們開始協助國王 iceking 1968 管理國內事物。iceprincess 1968 和iceprince 1968 住在乙個寧靜悠遠的王國 icekingdom 飄雪聖域。飄雪聖域有 n 個城鎮,編號 1,2,3.n ...
WOJ4379 飄雪聖域 主席樹
傳送門 每次詢問點的個數是r l 1,那麼聯通塊個數就是總點數減去邊的個數 考慮哪些邊有貢獻,令邊為l,r l有時靜態區間,然後就是主席樹 include define n 200050 using namespace std struct nodet n 40 int tot,rt n vecto...