个人模板 堆
来源:互联网 发布:鸡兔同笼java语言编程 编辑:程序博客网 时间:2024/03/28 23:54
大顶堆
#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 10;struct heap{ int size, a[N<<1]; heap(){ size = 0; memset(a, 0, sizeof(a)); } void Pushup(int k){ while(k > 1){ if(a[k] > a[k>>1]){ swap(a[k], a[k>>1]); } k >>= 1; } } void Pushdown(int k){ while(k<<1 <= size){ int kk = k<<1; if(kk < size && a[kk] < a[kk+1]){ kk++; } if(a[k] < a[kk]){ swap(a[k], a[kk]); k = kk; } else return; } } void push(int k){ a[++size] = k; Pushup(size); } void pop(){ swap(a[1], a[size]); size--; Pushdown(1); } int top(){ return a[1]; } bool empty(){ return size; }};int main(){ heap k; int a[6] = {1, 4, 2, 6, 3, 9}; for(int i = 0; i < 6; i++){ k.push(a[i]); } printf("top = %d\n", k.top()); k.pop(); printf("top = %d\n", k.top()); k.push(8); printf("top = %d\n", k.top());}
#include <bits/stdc++.h>using namespace std;vector<int> k;bool cmp(int a, int b){ return a < b;}int main(){ int a[6] = {1, 4, 2, 9, 6, 3}; for(int i = 0; i < 6; i++){ k.push_back(a[i]); } make_heap(k.begin(), k.end(), cmp); cout << "top = " << k[0] << endl; pop_heap(k.begin(), k.end(), cmp); cout << "top = " << k[0] << endl; k.push_back(8); push_heap(k.begin(), k.end(), cmp); cout << "top = " << k[0] << endl;}
阅读全文
0 0
- 个人模板 堆
- 堆模板
- 堆模板
- 堆模板
- 堆模板
- 堆模板
- [模板]堆
- 【模板】堆
- 堆模板
- 堆模板
- 堆【模板】
- 【ACM模板】堆排序
- 堆排序模板
- C++堆排序模板
- 堆排序【模板】
- 堆排序模板
- 堆排序模板
- c++模板---堆
- maven根据build输入导入不同的配置
- 添加节点
- 选购扫地机器人必须要懂的三件事
- input常用
- solr的IKAnalyzer中文分词器配置
- 个人模板 堆
- 什么是继承
- CAD-DUCT.Solids.v2.28.062\
- numpy相关tricks
- java获取class对象的方法
- android ListView中只显示一个item问题的两种解决办法
- 将有序单链表转化为平衡二叉树
- centos 6.5 64位系统安装32位运行库
- AccessibilityService有哪些缺陷?