HDU 1512 Monkey King [可并堆]
来源:互联网 发布:追风软件 编辑:程序博客网 时间:2024/06/13 19:09
题目传送门
左偏树入门题,模板题。
照板打就行了,左偏树的删除、插入都可以通过merge操作完成。
#include<cstdio>#include<algorithm>using namespace std;const int maxn = 100005;struct tree { int l,r,v,dis,f;}heap[maxn];int merge(int a,int b) { if(a==0)return b; if(b==0)return a; if(heap[a].v<heap[b].v)swap(a,b); heap[a].r=merge(heap[a].r,b); heap[heap[a].r].f=a; if(heap[heap[a].l].dis<heap[heap[a].r].dis)swap(heap[a].l,heap[a].r); if(heap[a].r==0)heap[a].dis=0; else heap[a].dis=heap[heap[a].r].dis+1; return a;}int pop( int a ) { int l=heap[a].l,r=heap[a].r; heap[l].f=l; heap[r].f=r; heap[a].l=heap[a].r=heap[a].dis=0; return merge(l,r);}int find( int a ){return heap[a].f==a?a:find(heap[a].f);}template<class T>inline void read(T &res){ static char ch;T flag=1; while((ch=getchar())<'0'||ch>'9')if(ch=='-')flag=-1;res=ch-48; while((ch=getchar())>='0'&&ch<='9')res=(res<<1)+(res<<3)+ch-48;res*=flag;}int main() { int a,b,finda,findb,n,m; while(scanf("%d",&n)!=EOF) { for(register int i=1;i<=n;++i ) { read(heap[i].v); heap[i].l=heap[i].r=heap[i].dis=0; heap[i].f=i; } read(m); while(m--){ read(a),read(b); finda=find(a); findb=find(b); if(finda==findb) { printf("-1\n"); }else{ heap[finda].v>>=1; int u=pop( finda ); u=merge(u,finda ); heap[findb].v>>=1; int v=pop(findb); v=merge(v,findb); printf("%d\n",heap[merge(u,v)].v); } } } return 0;}
阅读全文
0 0
- HDU 1512 Monkey King [可并堆]
- |Hdu 1512|可并堆|并查集|Monkey King
- hdu 1512 Monkey King (左偏树 可并堆)
- hdu 1512 Monkey King (可并堆)
- HDU 1512 Monkey King 可并堆,左偏树
- hdu 1512 Monkey King 左偏树(可并堆)
- [HDU1512]Monkey King(可并堆)
- zoj2334 Monkey King , 并查集,可并堆,左偏树
- hdu1512 Monkey King(可并堆插入+删除)
- hdu 1512 Monkey King (左偏树可并堆 并查集)
- hdu 1512 Monkey King
- 【HDU 1512】Monkey King
- hdu 1512 Monkey King
- HDU 1512 Monkey King
- HDU 1512 Monkey King
- HDU-1512-Monkey King
- HDU1512 Monkey King 解题报告【数据结构】【可并堆】【并查集】
- 可合并优先队列 HDU 1512 Monkey King
- A*算法详解
- JVM参数:-XX:StringTableSize
- VERIFY DATABASE 正在异常终止。 (Microsoft SQL Server,错误: 3169)
- POJ1753 Flip Game
- An Exploration of ARM TrustZone Technology
- HDU 1512 Monkey King [可并堆]
- Leetcode 556. Next Greater Element III
- 动归-----编辑距离
- 朴素贝叶斯算法原理小结
- 前、中、后缀表达式和前、中、后序遍历
- java模式—装饰者模式
- Python 内置函数 dir()
- 判断单向链表是否回文
- 神经性风格化过程的特征控制