1.水题
2.为了要让“折扣”最大化,肯定是送的价格越大越好; 无论怎么搭配,价格最高的两个货品是没有办法赠送的,所以我们可以设计让接下来最贵的(排总第三)货品当作赠送的,类似的,排除这三个货品之后,剩余的也是买“前两个”送“第三个”递归运算,这样我们就可以得到最大的“折扣”了
#include<iostream>
#include<queue>
using namespace std;
int main()
{
int testNum;
cin >> testNum;
while(testNum--)
{
priority_queue<int> Q;//默认大顶堆
int num;
cin >> num;
while(num--)
{
int temp;
cin >> temp;
Q.push(temp);
}
int discount = 0;
while(Q.size() >= 3)
{
Q.pop();
Q.pop();
discount = discount + Q.top();
Q.pop();
}
cout << discount << endl;
}
return 0;
}