黑科技 樹剖兩次dfs轉一次dfs!

2022-05-20 11:48:08 字數 651 閱讀 1423

黑科技——樹剖兩次\(dfs\)轉一次\(dfs\)!

重所周知,樹鏈剖分通常是要\(dfs​\)兩次的,就像這樣:

int fa[n],dep[n],sz[n],son[n];

void dfs1(int x,int pre)

}int l[n],r[n],id,top[n];

void dfs2(int x,int tp)

}

但是在一些\(n\)比較大並且的卡常毒瘤題中,我們如果使用了兩次\(dfs\)就有可能會出現\(tle\)的情況。

在這時,若我們無法優化本質演算法的情況下我們需要卡常。

怎麼卡呢?利用\(dfs\)序:

**如下:

int fa[n],dep[n],sz[n],son[n],l[n],r[n],id[n],cnt,top[n];

void dfs1(int x,int pre)

r[x]=cnt;

}rep(i,1,n)top[id[i]]=id[i]==son[fa[id[i]]]?top[fa[id[i]]]:id[i];

就這樣我們只用了一次\(dfs\)就完成了樹剖的預處理操作。

別小看這乙個遞迴,他在\(n\)較大的情況下,可以快大概\(1\)倍。

一次提交觸發兩次請求

我們公司的專案都是前後端分離的,上線幾個月以來,發現乙個很奇怪的問題,每次前端發起請求,通過瀏覽器的開發者工具都能看到在network下同乙個url有兩條請求,第一條請求的method為options,第二條請求的method才是真正的get或者post,並且,第一條請求無資料返回,第二條請求才會返...

一次跳轉和兩次跳轉

我們在做 jsp或者 servlet 跳轉時,經常用到一次跳轉和兩次跳轉,到底這兩者有什麼區別呢?下面是伺服器端的兩個 jsp頁面 test1.jsp request.setattribute username leno test2.jsp requestdispatcher rd request....

一次URL請求後台響應兩次

做專案時遇到乙個問題。現象是這樣的,我在頁面點按f5重新整理頁面,但是後台 卻響應了兩次,百思不得其解。然後我就試探性的去更改html的標籤裡面的東西,可是問題依舊。我一直在思索這個問題,到底是瀏覽器請求了一次後 的執行了兩次,還是產生了兩次請求?為了得到這個答案,我搜尋到httpwatch這個工具...