BZOJ3510 首都(LCT 啟發式Link)

2021-08-16 21:18:57 字數 1418 閱讀 5690

題面

題意:乙個森林,兩個操作,①連邊。②問乙個連通塊的重心。

由於它只有連邊,所以我們可以搞個類似啟發式的東西

考慮乙個小樹的u和一棵大樹的v連邊

重心一定打大樹裡面

設大樹的重心為ro

則新的重心一定在ro到v的路徑上

並且移動的步數不會超過小樹的siz

用lct維護子樹大小

evert(ro),access(v)後

在splay上拎出一條長為小樹的siz的鏈,在上面一步一步地走

就可以找到新的重心

這樣就是nlogn的了。

我的程式強行多個log

為了省常數就把重心記在了並查集上

#include 

#include

#include

#include

#include

#include

#include

#include

using namespace std;

#define mmst(a, b) memset(a, b, sizeof(a))

#define mmcp(a, b) memcpy(a, b, sizeof(b))

typedef

long

long ll;

const

int n=300300;

void read(int &hy)

}int n,q,u,v;

int fa[n],root[n],ans;

int find(int x)

struct tree

int d()

}nil[n],*ro[n];

void up(tree *x)

void down(tree *x)

}void work(tree *x)

void zig(tree *x)

void splay(tree *x)

}void access(tree *x)

; x->c[1]=y;

if(y!=nil)

y->f=x,x->other-=y->sum;

up(x);

y->pp=nil;

y=x;

x=x->pp;

}}void evert(tree *x)

tree *nex(tree *x)

splay(x);

return x;

}int main()

while(q--)

else

root[find(u)]=violet-nil;

fa[y]=x;

ans^=root[find(u)];}}

return

0;}

動力3 51 漏洞

檔案字尾條件,跳過,我的檔案不是asp等字尾,再跳過if語句,呵呵,enableupload變數保持為第一次迴圈的true值,這樣保證了founderr也沒改變,哈哈哈哈,木馬上傳成功!這裡用了乙個小技巧,大家肯定發現了,我的asp木馬沒用asp字尾,是因為程式作了限制,但是限制的不全,因為iis中...

3 5 1介質訪問控制

介質訪問控制所要完成的主要任務是為使用介質的每個結點隔離來自同一通道上其他結點所傳送的訊號,以協調活動結點的傳輸。用來決定廣播通道中通道分配的協議屬於資料鏈路層的乙個子層,稱為介質訪問控制 medium access control,mac 子層。常見的介質訪問控制方法有 通道劃分介質訪問控制,隨機...

UOJ 351 新年的葉子

給出一棵樹,每次隨機選擇乙個葉子節點 可以重複選 將其染黑,問樹上不經過黑點的最長鏈變短的期望染色次數是多少。這題的主要思路是用總代價除以總方案數。樹的直徑有乙個或兩個必經點,當直徑長度為奇數時,直徑的中點即為必經點,可以將有希望成為直徑上的葉子節點根據它屬於必經點的哪棵子樹進行分類,得到多個葉子集...