國家集訓隊 旅遊

2022-09-21 05:42:08 字數 1484 閱讀 2806

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...