合并果子(STL优先队列)
STL优先队列:priority_queue 定义:priority_queue<int>q; 从小到大:priority_queue<int,vector<int>,greater<int>>q;队列从小到大排序 从大到小:方法1:重载运算符 struct Node{ int x,y; Node(int a=0, int b=0): x(a), y(b) {} }; struct cmp{ bool operator()(Node a, Node b){ if(a.x == b.x) return a.y>b.y; return a.x>b.x; } }; priority_queue<Node,vector<Node>,cmp>q; 方法二:用less,priority_queue<int,vector<int>,less<int>>q;队列从大到小排序 题目来源: https://www.luogu.org/problem/P1090 题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过 n-1 n − 1 次合并之后, 就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。