link
很簡單一道題,評紫實在是有點暴殄天物。邊權下放到點權然後查詢時注意不要查詢lca的值即可。本來以為在區間取反的基礎上還有個區間加所以雙lazy還有點麻煩時,突然發現它似乎只有單點修改。
唯一不好的事就是我把樹剖的板子打錯了。應該判的是top的深度大小,然後我***竟然把這茬給忘了。於是調了兩個小時,最後在翻原來樹剖的**時偶然發現。操。
#include//#define zczc
const int n=200010;
const int inf=1e9;
inline void read(int &wh)
while(w<='9'&&w>='0')
wh*=f;return;
}inline int op()
}inline void swap(int &s1,int &s2)
inline int max(int s1,int s2)
}int cnt,id[n],top[n],fir[n];
void dfs2(int wh,int ntop)
}#define lc (wh<<1)
#define rc (wh<<1|1)
#define mid (t[wh].l+t[wh].r>>1)
#define num (t[wh].r-t[wh].l+1)
struct nodet[n<<2];
inline void pushup(int wh)
inline void pushnow(int wh)
inline void pushdown(int wh)
inline void build(int wh,int l,int r)
build(lc,l,mid);build(rc,mid+1,r);pushup(wh);
}inline void update(int wh,int pl,int val)
pushdown(wh);update(pl<=mid?lc:rc,pl,val);pushup(wh);
}inline void change(int wh,int wl,int wr)
pushdown(wh);if(wl<=mid)change(lc,wl,wr);if(wr>mid)change(rc,wl,wr);pushup(wh);
}int ansum,anmin,anmax;
inline void work(int wh,int wl,int wr)
pushdown(wh);if(wl<=mid)work(lc,wl,wr);if(wr>mid)work(rc,wl,wr);pushup(wh);
}#undef lc
#undef rc
#undef mid
#undef num
int ev[n];
signed main()
if(o>1) }
return 0;
}
國家集訓隊 旅遊
題目背景 ray 樂忠於旅遊,這次他來到了 t 城。t 城是乙個水上城市,一共有 nn 個景點,有些景點之間會用一座橋連線。為了方便遊客到達每個景點但又為了節約成本,t 城的任意兩個景點之間有且只有一條路徑。換句話說,t 城中只有 n 1n 1 座橋。ray 發現,有些橋上可以看到美麗的景色,讓人心...
國家集訓隊 旅遊
ray 樂忠於旅遊,這次他來到了 t 城。t 城是乙個水上城市,一共有 n 個景點,有些景點之間會用一座橋連線。為了方便遊客到達每個景點但又為了節約成本,t 城的任意兩個景點之間有且只有一條路徑。換句話說,t 城中只有 n 1 座橋。ray 發現,有些橋上可以看到美麗的景色,讓人心情愉悅,但有些橋狹...
luogu P1505 國家集訓隊 旅遊
題面傳送門 第一次一遍過國集紫題。好激動。一看就是樹剖,只不過操作有點多。把每條邊的權值放在兒子節點即可。對於取相反數放懶標記即可。其他是樹剖正常操作。實現 include include define max a,b a b a b define min a,b a b a b using nam...