从数据范围可以看出来是贪心

题目走这里

首先设t[i]为第i趟飞机的离开时间,c[i]为每延迟1分钟增加的费用

则我们需要最小化的就是sum{c[i]*(t[i]-i)}

sum{c[i]*(t[i]-i)}=sum{c[i]*t[i]}-sum{c[i]*i} 后者为常量

因此我们只需要最小化sum{c[i]*t[i]}

先上结论:最优解就是每次选取可选的航班中c[i]最大的那一个,一个大致的证明如下:

假设当前时刻是T,有两个航班i,j可选,c[i]>c[j]

若此时让j出发,则i的出发时间为T'>T,总费用即为c[j]*T+c[i]*T'<c[i]*T+c[j]*T'

因此此时让i出发最优,大致如此

为了维护当前可选的航班中最大的c[i],我们需要数据结构

priority_queue

一开始将前k个入队,之后每次将第k+i个入队,再将堆顶弹出,记录下当前的时间以及弹出的航班编号即可

最后输出答案,基本上是一道水题,不过记得要开long long,此外CF不接受%lld

代码如下:

#include <bits/stdc++.h>
#define LL long long
using namespace std;
inline LL read()
{LL x=0;char ch=getchar();while(ch>'9'||ch<'0')ch=getchar();while(ch<='9'&&ch>='0')x=x*10+ch-'0',ch=getchar();return x;
}
priority_queue<pair<LL,LL> > q;
LL n,k,c[300010],ans[300010];
int main()
{n=read();k=read();for(LL i=1;i<=n;i++){c[i]=read();}for(LL i=1;i<=k;i++){q.push(pair<LL,LL>(c[i],i));}long long ret=0;for(LL i=k+1;i<=k+n;i++){if(i<=n){q.push(pair<LL,LL>(c[i],i));}pair<LL,LL> f(q.top());ans[f.second]=i;ret+=f.first*(i-f.second);q.pop();}cout<<ret<<endl;for(LL i=1;i<=n;i++){cout<<ans[i]<<' ';}cout<<endl;return 0;
}

CF 853A Planning相关推荐

  1. 三:Planning and Managing the Project

    文章目录 一.Tracking progress 1.What is a project schedule, an activity, and a milestone 2.Work breakdown ...

  2. Cloud Foundry 3. cf 命令

    文章目录 1. Chapter Overview 2. Source Paths: Overview 2.1 Using the Current Directory 2.2 Specifying a ...

  3. 『参考』.net CF组件编程(4)——为自定义组件添加工具箱图标!

    前言: 在前三篇的文章中,和大家一起创建了一个用于TCP连接检测的小组件,如果你记不得了,可以通过以下链接去回顾一下: 『参考』.net CF组件编程(1)--基础之后 『参考』.net CF组件编程 ...

  4. 极限编程 (Extreme Programming) - 迭代计划 (Iterative Planning)

    (Source: XP - Iteration Planning) 在每次迭代开始时调用迭代计划会议,以生成该迭代的编程任务计划.每次迭代为1到3周. 客户从发布计划中按照对客户最有价值的顺序选择用户 ...

  5. ARP(Accounting Resource Planning)项目感想

    ARP是Accounting Resource Planning(会计资源计划)的简称. 转载于:https://blog.51cto.com/lya041/690079

  6. 路径规划(Path Planning)与运动规划(Motion Planning)

    路径规划(Path Planning)与运动规划(Motion Planning) 评论区有个观点: 也可以把路径规划理解为运动规划的一份.我个人具体的认识是,特别是在实现的时候,路径规划我们强调的是 ...

  7. 0501 0503 模块区别_apollo介绍之planning模块(四)

    吾尝终日而思矣 不如须臾之所学也 - <劝学> Planning模块简介 规划(planning)模块的作用是根据感知预测的结果,当前的车辆信息和路况规划出一条车辆能够行驶的轨迹,这个轨迹 ...

  8. OC对象 vs CF对象

    2019独角兽企业重金招聘Python工程师标准>>> OC对象 vs CF对象 在ARC场景下,对象所有权没有转换 使用__bridge关键字即可实现CF对象和OC对象之间的自由转 ...

  9. CF 990A. Commentary Boxes【数学/模拟】

    [链接]:CF [题意]:对于一个数n,每次加一的代价是a,每次减一的代价是b,求被m整除时的最小代价. [分析]:分情况讨论,自己多举几个栗子. [代码]: #include<cstdio&g ...

最新文章

  1. vb.net与matlab的混合编程
  2. TVS參数具体解释及选型应用
  3. 线程访问临界区的问题 实例,需解决
  4. linux mysql互为主从_mysql互为主从配置(双主模型)
  5. 浅析一般网站建设的需要耗费多长时间?
  6. SQL2000: MMC 不能打开文件
  7. linux 正在运行的程序不能拷贝_如何实现在Windows上运行Linux程序,附示例代码
  8. C#中你想象的Task,很简单?
  9. 牛客练习赛51-记录
  10. Win7性能信息和工具在哪打开
  11. 拆解百度自动驾驶最新动作:Apollo企业版和Apollo 3.5里的生意经和新风向 | CES 2019...
  12. 移动应用测试基于JAVA_Appium用于测试Android混合移动应用程序
  13. 5.1 tensorflow2实现简单线性回归分析——python实战
  14. 文华wh6如何修改服务器,文华财经 软件特色功能介绍修改
  15. 百度收录-如何使用API提交
  16. A Creed to Live By
  17. 怎么提取图片上的文字?非常方便
  18. 关于bp抓包挂代理127.0.0.1服务器出现“有软件正在阻止Firefox安全连接至网站”问题的解决方法
  19. Nuxt.js 如何做SEO优化
  20. 优雅地使用 C++ 制作表格:tabulate

热门文章

  1. vector函数用法全解
  2. java inputstream 图片_Java InputStream读取网络图片
  3. 运用python画虚拟礼物盒(来自远方的礼物)
  4. 手机话费接口 为指定手机直接充值
  5. 薄膜晶体管液晶显示器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  6. python中event key_event.keyCode用法及列表
  7. 儿保系统软件有哪些?
  8. js 时间转东八区_dayjs处理utc转换
  9. 烟台移动dns网关_网关什么的怎么设置。dns服务器地址。我是移动的宽带。
  10. multisim软件的主要特点