bzoj 4736 溫暖會指引我們前行

2021-08-20 06:29:58 字數 1339 閱讀 1037

題面lct維護最大生成樹即可 因為溫度互不相同 所以至少大的必須的邊都要走 又不可以多走 因為這題字典序的定義比較奇怪 多了反而不好 即lct上維護路徑和 維護邊的熱度最小 然後到時候替換即可

慶幸自己lct還能1a

#include

#include

#include

#include

#define fi first

#define se second

#define pa pair

#define mp(x,y) make_pair(x,y)

using namespace std;

inline

char gc()

return *s++;

}inline

int read()

while(isdigit(ch)) x=x*10+ch-'0',ch=gc();

return x*f;

}inline

void read_s(char *s)

const

int inf=0x3f3f3f3f;

const

int n=400030;

int fa1[n],fa[n],c[n][2],size[n],q[n],top,v[n],w[n],x[n],y[n],n,m,sum[n];

bool rev[n];pa mn[n];char s[n>>2];

inline

int find1(int x)

inline

void update(int x)

inline

bool isroot(int x)

inline

void rotate(int x)

inline

void pushdown(int x)

}inline

void splay(int x)rotate(x);

}}inline

void access(int x)

inline

void makeroot(int x)

inline

void link(int x,int y)

inline

int split(int x,int y)

inline

void cut(int x,int y)

int main()

}if (s[1]=='m')

split(x,y);printf("%d\n",sum[y]);

}if (s[1]=='c')

}return

0;}

BZOJ4736 溫暖會指引我們前行

給定n個點,要維護三種操作 find id u v t l 在u,v點間連一條編號id,溫度t,長度l的邊 保證溫度互不相同 move u v 詢問在u到v的路徑中,溫度從小到大排序後字典序最大的路徑的長度。若不存在路徑,輸出 1 change id l 將編號為id的邊長度改為l sample i...

清華集訓 溫暖會指引我們前行

emmm其實我在uoj上過不去,加的資料我tle了。但是bzoj上還是可以的。關於push up的小trick 初始化的時候給0節點也初始化成最大值,然後push up的時候不用管自己的左右兒子是否為空,直接返回左右兒子中比較小的乙個就可以了,然後再和自己作比較。qwqwq 如下 include i...

UOJ 274 溫暖會指引我們前行

傳送門 小r的宿舍樓中有 n nn 個地點和一些路,一條路連線了兩個地點,小r可以通過這條路從其中任意乙個地點到達另外乙個地點。但在剛開始,小r還不熟悉宿舍樓中的任何一條路,所以他會慢慢地發現這些路,他在發現一條路時還會知道這條路的溫度和長度。每條路的溫度都是互不相同的。小r需要在宿舍樓中活動,每次...