腾云网建设网站,做网站都需要服务器吗,免费的那种软件,国家网站icp备案查询解析
看起来就是左偏树的基本操作啊… 然而就是调不过去 吐了qwq
参考了望月大神的实现 感觉清晰的多 就定义并查集维护的是每个点所在的堆的根节点 一下子少了很多恶心的套娃
代码
#includebits/stdc.h
using namespace std;
#define ll long long
#define il inl…解析
看起来就是左偏树的基本操作啊… 然而就是调不过去 吐了qwq
参考了望月大神的实现 感觉清晰的多 就定义并查集维护的是每个点所在的堆的根节点 一下子少了很多恶心的套娃
代码
#includebits/stdc.h
using namespace std;
#define ll long long
#define il inline
const int N4e6100;
const double eps1e-9;
inline ll read(){ll x0,f1;char cgetchar();while(!isdigit(c)){if(c-) f-1;cgetchar();}while(isdigit(c)){xx*10c-0;cgetchar();}return x*f;
}
int n,m,w;
ll k;
int ls[N],rs[N],dis[N],tot,f[N],rt[N];
ll val[N];int bel[N],vis[N];
int find(int x){return xbel[x]?x:bel[x]find(bel[x]);}inline int New(ll v){tot;ls[tot]rs[tot]0;f[tot]0;dis[tot]0;val[tot]v;return tot;
}
inline void pushup(int x){if(dis[rs[x]]dis[ls[x]]) swap(ls[x],rs[x]);dis[x]dis[rs[x]]1;return;
}
int merge(int u,int v){if(!u||!v){return u|v;}if(val[u]val[v]||(val[u]val[v]uv)) swap(u,v);rs[u]merge(rs[u],v);pushup(u);bel[ls[u]]bel[rs[u]]bel[u]u;return u;
}void del(int x){if(vis[x]) return;vis[x]1;val[x]0;int omerge(ls[x],rs[x]);ls[x]rs[x]0;merge(find(x),o);return;
}
void Merge(int u,int v){ufind(u),vfind(v);if(uv) return;merge(u,v);return;
}
void jianshao(int x,int w){xfind(x);if(val[x]w){del(x);return;}int ox,oomerge(ls[x],rs[x]);ls[o]rs[o]0;val[o]-w;ls[o]rs[o]0;merge(o,oo);return;
}int main(){#ifndef ONLINE_JUDGEfreopen(a.in,r,stdin);freopen(a.out,w,stdout);#endifdis[0]-1;int Tread();wread();kread();while(T--){tot0;memset(vis,0,sizeof(vis));nread();mread();for(int i1;in;i){New(read());bel[i]i;}for(int i1;im;i){int opread();if(op2) del(read());else if(op3){int aread(),bread();jianshao(a,b);}else{Merge(read(),read());}}ll res(0),mx(0);for(int i1;in;i){if(find(i)!i) continue;resval[i];mxmax(mx,val[i]);}if(w2) res-mx;else if(w3) resmx;if(resk) printf(Hell ); else if(res) printf(Heaven );else printf(Gensokyo );printf(%lld\n,res);}return 0;
}