前言
本刷题系列是我为了蓝桥杯前几天可以再系统性思考一下真题所做,所以部分内容会很简洁。如果能够帮助到你,我也会很开心!!
优先队列+双链表
题目截图
思路
1.因为他是要每次选择数列中最小的整数,所以可以想到优先队列,优先队列默认是大跟堆,最小的数要创建小跟堆
priority_queue<int, vector<int>, greater<int>>q;
2.要动态删除元素的话并且还要让删除的元素的两边都加上值可以先考虑双向链表,操作简单。
总结
1.要懂得巧用优先队列
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> q;
有将两个数据弄成一个数据的时候可以考虑pair(比如说是想要把杂乱的数据排序,但是还想要原来的坐标就可以用pair)
make_pair()也可以生成我们想要的pair