链接 : http://codeforces.com/contest/854/problem/C

题意 : 有 n 架飞机需要分别在 1~n 秒后起飞,允许起飞的时间是从 k 秒后开始,给出每一架飞机拖延一秒的花费c[1]~c[n],问你如何安排飞机的起飞次序能够使得花费最小?

分析 : 需要安排的时间段为 k+1 ~ k+n ,贪心的策略是按这个顺序每一次选择花费最小  并且  不早于飞机规定的起飞时间的飞机区起飞必然能得到最优方案,因此我们可以构造一个优先队列每一次将待选飞机存放进去按照花费从小到大排序,但是不能一下子把所有的飞机存放进去,因为假如对于当前的某一个时间点 T ,如果有一个飞机的规定起飞时间比这个时间晚那么肯定不能安排到这个时间 T 上。所以我们是对于当此时的飞机规定起飞时间 > k 然后一个个放进去的。

#include<bits/stdc++.h>
using namespace std;
;
class plane
{
public:
    int id;
    int cost;
    bool operator < (const plane & rhs) const{
        return this->cost < rhs.cost;
    };
};
plane arr[maxn];
int ans[maxn];
int main(void)
{
    int n, k;
    scanf("%d %d", &n, &k);
    priority_queue<plane> pq;
    while(!pq.empty()) pq.pop();

    ; i<=n; i++){
        scanf("%d", &arr[i].cost);
        arr[i].id = i;
    }
    ; i<=k; i++) pq.push(arr[i]);

    ;
    ;
    while(!pq.empty()){
        if(cnt <= n) pq.push(arr[cnt]);
        plane now = pq.top();
        pq.pop();
        ans[now.id] = cnt;
        Cost += (long long)(cnt - now.id) * (long long)now.cost;
        cnt++;
    }
    cout<<Cost<<endl;
    ; i<=n; i++)
        printf("%d ", ans[i]);
    ;
}

#433 Div2 Problem C Planning (贪心 && 优先队列)的更多相关文章

  1. hihoCoder 1309:任务分配 贪心 优先队列

    #1309 : 任务分配 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定 N 项任务的起至时间( S1, E1 ), ( S2, E2 ), ..., ( SN,  ...

  2. UVA 11134 - Fabled Rooks(贪心+优先队列)

    We would like to place  n  rooks, 1 ≤  n  ≤ 5000, on a  n×n  board subject to the following restrict ...

  3. C. Playlist Educational Codeforces Round 62 (Rated for Div. 2) 贪心+优先队列

    C. Playlist time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...

  4. HDU 6438 网络赛 Buy and Resell(贪心 + 优先队列)题解

    思路:维护一个递增队列,如果当天的w比队首大,那么我们给收益增加 w - q.top(),这里的意思可以理解为w对总收益的贡献而不是真正获利的具体数额,这样我们就能求出最大收益.注意一下,如果w对收益 ...

  5. 贪心+优先队列 HDOJ 5360 Hiking

    题目传送门 /* 题意:求邀请顺序使得去爬山的人最多,每个人有去的条件 贪心+优先队列:首先按照l和r从小到大排序,每一次将当前人数相同的被邀请者入队,那么只要能当前人数比最多人数条件小,该人能 被邀 ...

  6. [POJ1456]Supermarket(贪心 + 优先队列 || 并查集)

    传送门 1.贪心 + 优先队列 按照时间排序从前往后 很简单不多说 ——代码 #include <queue> #include <cstdio> #include <i ...

  7. Painting The Fence(贪心+优先队列)

    Painting The Fence(贪心+优先队列) 题目大意:给 m 种数字,一共 n 个,从前往后填,相同的数字最多 k 个在一起,输出构造方案,没有则输出"-1". 解题思 ...

  8. CF140C New Year Snowmen(贪心+优先队列)

    CF140C 贪心+优先队列 贪心策略:每次取出数量最多的三种球,合成一个答案,再把雪球数都-1再插回去,只要还剩下三种雪球就可以不断地合成 雪球数用优先队列维护 #include <bits/ ...

  9. codeforces 854C.Planning 【贪心/优先队列】

    Planning time limit per test 1 second memory limit per test 512 megabytes input standard input outpu ...

随机推荐

  1. python基础:multiprocessing的使用

    不同于C++或Java的多线程,python中是使用多进程来解决多项任务并发以提高效率的问题,依靠的是充分使用多核CPU的资源.这里是介绍mulitiprocessing的官方文档:https://d ...

  2. CSS3——对齐 组合选择符 伪类 伪元素 导航栏 下拉菜单

     水平&垂直对齐 元素居中对齐 .center { margin: auto; width: 50%; border: 3px solid green; padding: 10px; } 文本 ...

  3. 简述Vue的实例属性、实例方法

    1.实例属性 组件树访问 $parent -----> 用来访问当前组件实例的父实例: $root -----> 用来访问当前组件树的根实例,如果当前组件没有父实例,则$root表示当前组 ...

  4. django 的 MTV 流程图

  5. Service-Oriented Architecture,SOA(转)

    http://blog.csdn.net/WOOSHN/article/details/8036910 介绍: IT体系结构已非常成熟,它是一种成功处理典型IT问题的方法.体系结构中一个受到很大重视且 ...

  6. API接口设计

    1.场景描述 比如说我们要做一款APP,需要通过api接口给app提供数据.假设我们是做商城,比如我们卖书的.我们可以想象下这个APP大概有哪些内容: 1)首页:banner区域(可以是一些热门书籍的 ...

  7. js分页加载数据

    <script type="text/javascript"> $(function(){ $.ajax({ type: "post", dataT ...

  8. 最长上升子序列(LIS) Easy

    A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequence of the given ...

  9. 缓存字节流-写coppy方法

    package ba; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io. ...

  10. eclipse项目添加到本地仓库

    右键项目→Team→Add to Index 提交后,项目变化如下: *表示已经提交到暂存区,可以进行提交操作 右键项目→Team→Commit 可以填写提交信息: 点击信息下面的commit按钮 项 ...