time limit: 10 sec memory limit: 128 mb
submit: 2149 solved: 781
[submit][status][discuss]
我曾在弦歌之中聽過你,
檀板聲碎,半出折子戲。
舞榭歌台被風吹去,
歲月深處尚有餘音一縷……
gty神(xian)犇(chong)從來不缺妹子……
他來到了一棵妹子樹下,發現每個妹子有乙個美麗度……
由於gty很哲♂學,他只對美麗度大於某個值的妹子感興趣。
他想知道某個子樹中美麗度大於k的妹子個數。
某個妹子的美麗度可能發生變化……
樹上可能會出現乙隻新的妹子……
維護一棵初始有n個節點的有根樹(根節點為1),樹上節點編號為1-n,每個點有乙個權值wi。
支援以下操作:
0 u x 詢問以u為根的子樹中,嚴格大於x的值的個數。(u^=lastans,x^=lastans)
1 u x 把u節點的權值改成x。(u^=lastans,x^=lastans)
2 u x 新增乙個編號為"當前樹中節點數+1"的節點,其父節點為u,其權值為x。(u^=lastans,x^=lastans)
最開始時lastans=0。
輸入第一行包括乙個正整數n(1<=n<=30000),代表樹上的初始節點數。
接下來n-1行,每行2個整數u,v,為樹上的一條無向邊。
任何時刻,樹上的任何權值大於等於0,且兩兩不同。
接下來1行,包括n個整數wi,表示初始時每個節點的權值。
接下來1行,包括1個整數m(1<=m<=30000),表示操作總數。
接下來m行,每行包括三個整數 op,u,v:
op,u,v的含義見題目描述。
保證題目涉及的所有數在int內。
對每個op=0,輸出一行,包括乙個整數,意義見題目描述。
21 2
10 20
10 1 5
22017.9.28新加資料一組by gxzlegend,未重測
傳說中的樹分塊,但是會被暴力卡,我貌似沒找出什麼方法,
和根一起一起到達根號n就就分塊,這個沒什麼用,會被菊花圖卡掉的。
1 #include2 #include3 #include4 #include5 #include67#define n 60007
8using
namespace
std;
9 inline int
read()
1013
while(isdigit(ch))
14return x*f;15}
1617
intn,m,block,ans,tot;
18int
a[n],fa[n],bl[n];
19int cnt,hed[n],nxt[n<<1],rea[n<<1
];20
int cnt,hed[n],nxt[n<<1],rea[n<<1
];21
22struct
node
2326
void change(int x,int
y)27
32int query(int
x)33
37}blo[n];
38 inline void add(int u,int
v)39
44 inline void add_two_way(int u,int
v)45
49 inline void ins(int u,int
v)50
55void dfs(int
u)5666}
67void block_dfs(int u,int
z)6875}
76void solve(int u,int
z)7786}
87int
main()
88110
else
if (opt==1
)111
115else
116125
}126
}127 }
bzoj3720 Gty的妹子樹
我們可以樹上分塊,詳見我部落格中雜文下的根號演算法題庫 然後每個塊維護降序,對於整一塊在子樹內的就可以二分,其餘部分暴力。include include include include define fo i,a,b for i a i b i using namespace std const i...
BZOJ3720 Gty的妹子樹
如果沒有插入操作,那麼直接對dfs序建立線段樹套平衡樹即可,有插入操作的話,將外層的線段樹換成重量平衡樹即可。一開始寫替罪羊樹套權值線段樹無限mle 所以只好寫替罪羊樹套treap include include includeusing namespace std typedef unsigned...
BZOJ3720 Gty的妹子樹
題目 題解 傳說中的塊狀樹。和鏈剖思想差不多,能塞到父親塊裡的就塞,否則自己新開一塊。只是比較糾結樹分塊究竟用什麼?如果是樹上莫隊的話好像不能這麼分?被菊花卡死?然後我們就每個塊暴力維護資訊。剛開始以為set就行了,到了寫查詢的時候發現尼瑪set是不能維護名次的t t 還是老老實實寫線性表吧。塊開s...