傳送門
題解:
好題。又是一種經典模型。
先假設沒有終止節點。 記f
i fi表示
i i
到fai' role="presentation">fai
fai的期望步數,gi
g
i表示fa
i fai
到i i
的期望步數。
我們發現:每次詢問兩點,
u' role="presentation">uu到
lca lca
的fif i,
v v
到lca' role="presentation">lca
lca的
gig
i不會失效(可以想想為什麼)。 然後處理出這兩個陣列就直接鏈查詢了。
處理就非常*****了,按照以前的套路,可以推得: fi
=deg
i+∑j
≠fai
fjf i=
degi
+∑j≠
faif
jgi=
degf
ai+∑
j≠i,
j≠fa
faif
j+gf
aig i=
degf
ai+∑
j≠i,
j≠fa
faif
j+gf
ai
。o(n)
o (n
)dp即可。
#include
using
namespace
std;
typedef
long
long ll;
typedef
long
double ld;
const
int rlen=1
<<18|1;
inline
char nc()
inline
int rd()
while(isdigit(ch))
return i*f;
}inline
void w(ll x)
if(x<0)
while(x)
while(buf[0]) putchar(buf[buf[0]--]+'0');
}const
int n=1e5+50;
int n,src,des;
vector
edge[n];
int deg[n], sze[n], son[n], top[n], fa[n], dep[n];
ll f[n], g[n], sf[n], sg[n];
inline
void dfs(int x,int ff)
f[x]=deg[x]+sum;
}inline
void dfs2(int x,int ff)
inline
void dfs3(int x,int ff)
}inline
int lca(int x,int y) return (dep[x]>dep[y]) ? y : x;
}int main()
dfs(1,0); dfs2(1,0);
top[1]=1; dfs3(1,0);
for(int q=rd();q;q--)
}
python模擬隨機遊走
在python中,可以利用陣列操作來模擬隨機遊走。下面是乙個單一的200步隨機遊走的例子,從0開始,步長為1和 1,且以相等的概率出現。純python方式實現,使用了內建的random模組 隨機遊走 第二種方式 簡單的把隨機步長累積起來並且可以可以使用乙個陣列表示式來計算。因此,我用np.rando...
python模擬隨機遊走
在python中,可以利用陣列操作來模擬隨機遊走。下面是乙個單一的200步隨機遊走的例子,從0開始,步長為1和 1,且以相等的概率出現。純python方式實現,使用了內建的random模組 隨機遊走 第二種方式 簡單的把隨機步長累積起來並且可以可以使用乙個陣列表示式來計算。因此,我用np.rando...
BJ模擬 String(SAM LCT 主席樹)
傳送門 題意 給字串 s s 支援 1.末尾加入字元。2.查詢 l r role presentation l,r l r 中出現兩次的最長字串。題解 好題。考慮離線做法 動態插入後面的字元,更新前面 l l 的答案。當我們插入乙個字元 r role presentation r r的時候,與前面的...