04-树9. Path in a Heap (25) -- 小堆树-利用其性质
2015-08-22 16:12
323 查看
题目地址:http://www.patest.cn/contests/mooc-ds/04-%E6%A0%919
/* 04-树9. Path in a Heap (25) http://www.patest.cn/contests/mooc-ds/04-%E6%A0%919 节点编号为i的 两个孩子编号 2*i , 2*i+1 一个节点编号为i的父节点编号 i/2(i为奇数和偶数都一样) */ #include <cstdio> #include <sstream> #include <cstring> #include <iostream> #include <string> #include <vector> #include <queue> #include <algorithm> #include <sstream> #include <cmath> #include <set> #include <map> #include <unordered_map> #include <stack> using namespace std; #define N 1001 int n, m; int a ; // 每一个编号的数据,从1开始 void insert2a(int num, int index) { if (index == 1) a[1] = num; else{ int parent = -1; // 不断的调整到根节点 while (parent != 1) { parent = index / 2; if (num >= a[parent]) { a[index] = num; break; } else{ int tmp = a[parent]; a[parent] = num; a[index] = tmp; } index = parent; } } } int main() { //freopen("in", "r", stdin); scanf("%d%d", &n, &m); int i, tmp; for (i = 1; i <= n; i++) { scanf("%d", &tmp); insert2a(tmp, i); } //vector<int> v; for (i = 0; i < m; i++) { scanf("%d", &tmp); while (tmp != 1) { printf("%d ", a[tmp]); tmp = tmp / 2; } printf("%d\n",a[1]); } return 0; }
相关文章推荐
- FastJSON应用前测试
- bfs模版
- OCiOS开发:音频播放器 AVAudioPlayer
- UVa:1610 Party Games(字符串处理)
- C++builder的文件读写操作总结(3)
- Java进阶06 容器
- 揭开私有继承的面纱
- 线段树维护区间的和和单点更新-HDU1166-敌兵布阵
- hdu 1698 Just a Hook(线段树成段更新+延迟标记).
- [python] 命令行参数
- CF268C. Beautiful Sets of Points
- 浏览器的重绘、回流及网页优化
- HDU1556Color the ball
- jquery+css实现的红色线条横向二级菜单效果
- The one who can give anything you want is only yourself. The rating is the only you should pursue.
- CODE COMPLETE 2e Chapter 7
- Jenkins 的安装与简单使用
- Python TCP服务器
- 2014——我的求职(两)
- PPT是什么