默认大根堆
priority_queue<int> pq;
pq.push(3);
pq.push(10);
cout << pq.top(); // 10默认情况下,top() 是当前最大值。
小根堆写法
priority_queue<int, vector<int>, greater<int>> pq;这行比较长,但机试里很常用。需要每次取最小值时就用它。
常见场景
- TopK:维护最好的 k 个候选
- 合并多个有序序列:每次取当前最小
- Dijkstra:每次取当前距离最小的点
C++ 机试动画
本课导读
priority_queue 让你每次都能拿到当前优先级最高的元素。默认是大根堆;如果要最小值,需要写小根堆模板。
priority_queue<int> pq;
pq.push(3);
pq.push(10);
cout << pq.top(); // 10默认情况下,top() 是当前最大值。
priority_queue<int, vector<int>, greater<int>> pq;这行比较长,但机试里很常用。需要每次取最小值时就用它。
把 C++ 做题手感练出来
这套课只讲机试最常用的 C++:输入输出、类型、数组、字符串和 STL。先把这些模板练熟,再去刷数据结构和算法题,效率会高很多。