首页 > 其他 > 详细

山东师范大学寒假训练赛1补题

时间:2020-02-04 18:01:40      阅读:62      评论:0      收藏:0      [点我收藏+]

C - C

 CodeForces - 854C 

思想:贪心——在能起飞的每一分钟里从能起飞的飞机中选择当前成本最高的飞机先起飞,方能使最终的成本最低。

运用STL数据结构——优先队列。

需要注意的地方——最终花费开long long,在计算并加每一分钟花费时要将int型的变量转为long long只需*1ll即可。

代码如下:(一次循环,维护一个优先队列)

#include<iostream>
#include<queue>
using namespace std;
struct node
{
    int num;
    int m;    
};
bool operator<(node a,node b)
{
    return a.m<b.m;    
}
priority_queue<node> que;
int num0[300010]; 
int main()
{
    int n,k;
    long long minmo=0;
    scanf("%d%d",&n,&k);
    for(int i=1;i<=n+k;i++)
    {
        int mo;
        if(i<=n) 
        {
        scanf("%d",&mo);
        que.push({i,mo});
        }
        if(i>=k+1)
        {
            minmo+=1ll*que.top().m*(i-que.top().num);
            num0[que.top().num]=i;
            que.pop();
        }
    }
printf("%lld\n",minmo);
for(int i=1;i<=n;i++)
{
    if(i!=n) printf("%d ",num0[i]);
    else printf("%d",num0[i]);
}
return 0;
}

 

山东师范大学寒假训练赛1补题

原文:https://www.cnblogs.com/Cnxz/p/12260209.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!