窮哭了
難嗎?難碼.
首先觀察一下操作一,就是乙個access,但是要改變子樹啊,lct不緇瓷,所以線段樹稍微維護一下。
怎麼維護是乙個大難點啊。
是要分類討論的。
先找出實右子樹在原數上的根xxx。
情況rt=x
rt=x
rt=x
,直接修改整顆樹。
r trt
rt在子樹中,令y=r
ty=rt
y=rt
,跳到x
xx的兒子上,由於x
xx的整顆子樹,都不用經過x就可以到達y
yy,即可證明正確性,修改除此以外部分。
不在樹中,修改這棵子樹即可。
詢問也是類似的。
用d fs
dfsdf
s序是乙個好辦法。
#include
#include
#include
#include
#include
#define ll long long
#define gc getchar()
using
namespace std;
const
int n=
1e5+10;
inline
voidqr(
int&x)
while
(c>=
'0'&&c<=
'9')
x*=f;
}int rt,dep[n]
,fa[n][18
],tmp[n]
,st[n]
,ed[n]
,n,m,bin[18]
,tp;
inline
void
jump
(int
&a,int h)
struct sgttr[n<<2]
;inline
void
update
(int p)
inline
void
cad(
int p,
int ad)
void
pud(
int p)
void
build
(int p,
int l,
int r)
tr[p]
.l=l;tr[p]
.r=r;
int mid=
(l+r)
>>1;
build
(p<<
1,l,mid)
;build
(p<<1|
1,mid+
1,r)
;update
(p);
tr[p]
.c=tr[p<<1]
.c+tr[p<<1|
1].c;}
void
change
(int p,
int l,
int r,
int ad)
pud(p)
;int mid=
(tr[p]
.l+tr[p]
.r)>>1;
if(l<=mid)
change
(p<<
1,l,r,ad);if
(r>mid)
change
(p<<1|
1,l,r,ad)
;update
(p);
}void
change
(int x,
int ad)
else
change(1
,st[x]
,ed[x]
,ad);}
ll query
(int p,
int l,
int r)
double
query
(int x)
else
return
1.0*
query(1
,st[x]
,ed[x])/
(ed[x]
-st[x]+1
);}struct lctt[n]
;inline
bool
nroot
(int p)
void
crv(
int p)
void
pushdown
(int p)
void
rotate
(int p,
int w)
void
sdfs
(int p)
void
splay
(int p)}}
intfind
(int x)
void
access
(int x)
}void
makeroot
(int x)
struct edgea[n<<1]
;int len,last[n]
;void
ins(
int x,
int y)
;last[x]
=len;
}void
dfs(
int x)
ed[x]
=tp;
}char s[n][20
];int qx[n]
;int
main()
bool bk=0;
for(
int i=m;i>=
1;i--)if
(s[i][3
]=='q')if(
!bk)m=0;
for(
int i=
1;i<=m;i++
)return0;
}
BZOJ3779 重組病毒
題目大意 給一棵樹,每個點一開始顏色互不相同,支援三個操作 1.將乙個點到根的路徑染成一種新的顏色 2.將乙個新的點設為根,並將原來的根到這個點的路徑染成一種新的顏色 3.查詢乙個子樹 對於當前根 到根的路徑期望顏色數 真tm是道神題,idea實在是太妙了 首先由於第2個操作的特殊性,我們可以發現,...
bzoj 3779 重組病毒
一道好題 乙個點到根傳染需要的時間是這段路徑上不同顏色的數目,乙個點子樹到根平均傳染時間就是加權平均數了 好像是廢話 所以只要用線段樹維護dfs序就這個可以了,換根的話乙個點的子樹要麼在dfs序中不變,要麼被截成了 1,l 和 r,n 兩段 當這個點為當前root的祖先 l和r即為包含當前根的這個點...
bzoj 3779 重組病毒
黑客們通過對已有的病毒反編譯,將許多不同的病毒重組,並重新編譯出了新型的重組病毒。這種病毒的繁殖和變異能力極強。為了阻止這種病毒傳播,某安全機構策劃了一次實驗,來研究這種病毒。實驗在乙個封閉的區域網內進行。區域網內有n臺計算機,編號為1 n。一些計算機之間通過網線直接相連,形成樹形的結構。區域網中有...