京东4.18 笔试

1.最小亏损的题目,最后提交的,第一次排序超时,过了50%,换成大顶堆
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
void getMinloss(priority_queue<int>losData,int m,int n, int q){
    int res=0;
    int day=q/m,lis=q%m;
    if(lis>0)
        day=day+1;
    if(q==n){
        for (int i = 1; i <=day; ++i) {
            for (int j = 0; j < m; ++j) {
                res+=i*losData.top();
                losData.pop();
                if(losData.empty())
                    break;
            }
        }
    } else{
        for (int k = 0; k <n-q; ++k){
            losData.pop();
        }
        for (int i = 1; i <=day; ++i) {
            for (int j = 0; j < m; ++j) {
                res+=i*losData.top();
                losData.pop();
                if(losData.empty())
                    break;
            }
        }
    }
    cout<<res<<endl;
}
int main() {
    int n,m,q;
    cin>>n>>m;
    priority_queue<int> losData;
    int temp;
    for (int i = 0; i <n ; ++i) {
        cin>>temp;
        losData.push(temp);
    }
    cin>>q;
    vector<int> qData;
    for (int j = 0; j < q; ++j) {
        cin>>temp;
        qData.push_back(temp);
    }
    for (int k = 0; k <q; ++k) {
        int s=qData[k];
        getMinloss(losData,m,n,s);
    }
    return 0;
}

#京东##笔试题目#
全部评论
这是ac了吗
点赞 回复 分享
发布于 2020-04-18 21:57
时间复杂度为O(nlogn)吗
点赞 回复 分享
发布于 2020-04-19 00:07

相关推荐

感觉初筛都过不去,但是没挂我,我就先等着吧
投递华为技术有限公司等公司10个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
08-04 22:37
桂林学院 Java
行不行阿细GO:说真的我现在看到校招java简历都头痛。。千篇一律和阅卷高考作文差不多,估计公司也是吧,到最后就看学历和大厂实习了
投递BOSS直聘等公司10个岗位
点赞 评论 收藏
分享
牛客50327486...:腾讯官方:我们没有人机对局
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务