1 条题解

  • 0
    @ 2019-09-20 13:48:29

    //虽然这道题是个贪心 用数组便可以做出 但本蒻最近学了队列 所以尝试用队列写一写
    //发现好像还挺简单的 而且速度快
    #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

信息

难度
7
分类
贪心 点击显示
标签
递交数
28
已通过
7
通过率
25%
上传者