zoukankan      html  css  js  c++  java
  • C3-Zexal的浩瀚星辰

    题目描述

    Zexal想要发射火箭,但是由于能源供应不足了,所以一些火箭需要延迟发射。 每个火箭每延迟一小时发射都会相应的损失。Zexal了解到,一共有n个火箭,其中第i个火箭原计划在第i小时发射,即1~n时间段发射,现预计k小时后电力可以恢复正常,即所有火箭将在k+1~k+n时间段内发射,

    新的火箭发射计划不要求按照最初的发射计划顺序,唯一的要求是每个火箭都不能早于原定时间发射。请你帮忙计算一下最小的损失吧。

    注意:时间均以小时为最小单位。由于条件有限,一次只能发射一枚火箭。

    输入

    输入包含多组数据。

    每组数据第一行为正整数nk1n500000,1k500000),为火箭总数和延迟时间。

    接下来是n个正整数 pi,代表第i个火箭每延迟一小时的损失费(1≤pi≤104)。

    输出

    对于每组数据,输出一行,为最小的损失费用。

    输入样例

    1 2
    10
    2 1
    10 100

    输出样例

    20
    20

    代码

    #include <iostream>
    #include <algorithm>
    #include <queue>
    using namespace std;
    struct gun
    {
        int l,p;
    } s[500005];
    bool operator<( gun x, gun y)
    {
        if(x.p==y.p)
            return x.l<y.l;
        return x.p < y.p;
    }
    priority_queue<gun> Q;
    int main()
    {
        int n,k;
        while(cin>>n>>k)
        {
            long long ans = 0;
            for(int i = 0; i < n; i++)
            {
                cin>>s[i].p;
                s[i].l = i;
            }
            for(int i = 0; i < k; i++)
                Q.push(s[i]);
            for(int i = k; i < k+n; i++)
            {
                if(i < n) Q.push(s[i]);
                gun t = Q.top();
                ans += (long long )(i - t.l) * t.p;
                Q.pop();
            }
            cout << ans <<endl;
        }
    
        return 0;
    }
  • 相关阅读:
    抱歉,我不接私单了
    MySQL大小写补坑记
    Go 系列教程 —— 第 15 部分:指针
    Go 系列教程 —— 14. 字符串
    Go 系列教程 —— 13. Maps
    Go 系列教程 —— 12. 可变参数函数
    Go 系列教程 —— 11. 数组和切片
    Go 系列教程 — 10. switch 语句
    Go 系列教程 — 9. 循环
    Go 系列教程 —— 8. if-else 语句
  • 原文地址:https://www.cnblogs.com/kubab119/p/11823213.html
Copyright © 2011-2022 走看看