标签:启发式 pop top get 线段 push abd 线段树 合并
单调队列
:
code by zhx
void dandiao() { int front=1,tail=0; for (int a=1;a<=k;a++) { while (tail>=front && z[a]<q[tail][0]) tail--; tail++; q[tail][0]=z[a];q[tail][1]=a; } for (int a=k+1;a<=n;a++) { while (tail>=front && z[a]<q[tail][0]) tail--; tail++; q[tail][0]=z[a];q[tail][1]=a; if (q[front][1]==a-k) front++; } }
手写队列+手写 栈:
stack:
class stack { int size=0,s[10000]; void enque(int x) { s[++size]=x;} void deque() { size--;} bool empty() { return size!=0;} int front() { return s[size]; }
队列:
class queue { int front=1,tail=0,q[10000]; void enque(int x) { q[++tail]=x;} void deque() { front++;} bool empty() { return front>tail;} int front1() { return q[front]; }
STL:中的priority_queue
priority_queue<int> heap; heap.push(-x);//logn heap.pop();//logn heap.top();//1 heap.size();//1 heap.empty();//1
并查集,启发式合并
把节点较少的合并到节点节点较多的上
是一种优化
void merge(int p1,int p2) { int f1=getf(p1); int f2=getf(p2); if (f1!=f2) { if (size[f1]>size[f2]) swap(f1,f2); f[f1]=f2; size[f2]+=size[f1]; } }
杂七杂八的线段树
code by zhx
标签:启发式 pop top get 线段 push abd 线段树 合并
原文地址:http://www.cnblogs.com/sssy/p/7202827.html