emmm其實我在uoj上過不去,加的資料我tle了。。。。。。
但是bzoj上還是可以的。。。。。
關於push_up的小trick:初始化的時候給0節點也初始化成最大值,然後push_up的時候不用管自己的左右兒子是否為空,直接返回左右兒子中比較小的乙個就可以了,然後再和自己作比較。qwqwq
**如下:
#include#include#include#include#define maxn 400010
using namespace std;
int n,m,tot;
int s[maxn];
char cur[10];
struct edget[maxn];
struct edge2edge[maxn];
inline int ls(int x)
inline int rs(int x)
inline void push_up(int x)
inline void rotate(int x)
inline void push_down(int x)
}inline void splay(int x)
}inline void access(int x)
inline void makeroot(int x)
inline void split(int x,int y)
inline void cut(int x,int y)
inline void link(int x,int y)
inline int findroot(int x)
int main()
t[edge[i].id+n].tmp=edge[i].a;
t[edge[i].id+n].val=edge[i].b;
link(u,edge[i].id+n),link(v,edge[i].id+n);
}else if(cur[0]=='m')
else
}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...
bzoj 4736 溫暖會指引我們前行
題面lct維護最大生成樹即可 因為溫度互不相同 所以至少大的必須的邊都要走 又不可以多走 因為這題字典序的定義比較奇怪 多了反而不好 即lct上維護路徑和 維護邊的熱度最小 然後到時候替換即可 慶幸自己lct還能1a include include include include define fi...
UOJ 274 溫暖會指引我們前行
傳送門 小r的宿舍樓中有 n nn 個地點和一些路,一條路連線了兩個地點,小r可以通過這條路從其中任意乙個地點到達另外乙個地點。但在剛開始,小r還不熟悉宿舍樓中的任何一條路,所以他會慢慢地發現這些路,他在發現一條路時還會知道這條路的溫度和長度。每條路的溫度都是互不相同的。小r需要在宿舍樓中活動,每次...