rt,我在写 LCT 的时候喜欢这么下传标记:
LCT *now=x;
std::stack< LCT* >st;
st.push(now);
while(notroot(now)) st.push(now=now->fa);
while(st.size()) push_down(st.top()),st.pop();
不过这样 TLE 到飞起,然后我观察了一下题解区的大佬的 LCT 是这样下穿标记的:
inline void relieve(LCT *now){
if(notroot(now)) relieve(now->fa);
push_down(now);
}
以前我一直按照我那种写法,没有觉得常数很大,但是今天这个东西真的是慢到超乎我的想象了。
不知道 CCF 的机子怎么样,如果因为 STL 的关系 TLE 的话岂不是太可惜了。