1 条题解
-
0Guest LV 0
-
0
//虽然这道题是个贪心 用数组便可以做出 但本蒻最近学了队列 所以尝试用队列写一写
//发现好像还挺简单的 而且速度快
#include<bits/stdc++.h>
using namespace std;
int main()
{
//队列的声明都应在主函数内
priority_queue<int,vector<int>,less<int> > q;//降序队列
//priority_queue<int,vector<int>,greater<int> > 升序序列
int n,k,a[10000];
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>a[i];
q.push(a[i]);//将每一个商品运输价格放入队列进行排序
}
while(q.size()>=2)//反复直到队列中只有一个数为止,即为答案
{
int x=q.top();
q.pop();
int y=q.top();
q.pop();
int z=(x+y)/k;
q.push(z);
//每次pop出前两个最大值相加在除以k,再将得数push到队列中
}
cout<<q.top()<<endl;
return 0;
}
//top 访问队头元素
//empty 队列是否为空
//size 返回队列内元素个数
//push 插入元素到队尾 (并排序)
//emplace 原地构造一个元素并插入队列
//pop 弹出队头元素
//swap 交换内容
//来自某届石光中学的信竞苟蒻学长 愿看到此文的你 努力码题 为校争光
- 1