主要考察的就是一个建堆的过程,小根堆比较简单,插入一个元素到树的末端,每次与他的父节点比较,如果插入的元素更小就swap该元素和父节点,再对更新后的父节点进行同样的操作直至递归到根节点,这个操作由up函数完成。
#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
int n, m;
int tr[N];
unordered_map<int, int> mp;
void up(int u)
{
if(u == 1) return;
if(tr[u] < tr[u / 2]) swap(tr[u / 2], tr[u]);
up(u / 2);
}