黑科技——樹剖兩次\(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這個工具...