Convention II 题解

题面:

在这里插入图片描述

翻译:

农民约翰的农场吸引了大量奶牛前来吃草.
但是他的农场一次只能容纳一头奶牛同时吃草,所以奶牛需要排队.
每头牛都会在某一时刻到达,如果到达的时候农场是空闲的,那么他马上开始吃草,并且在一段时间后吃完.
如果在他到达时农场不为空,那么他等待前面的奶牛吃完,才开始吃
如果在农场空闲下来的那个时刻,有多头奶牛在等待,那么优先度高的那一头先吃(先输入的优先度高)
计算所有牛所需的等待时间的总和

输入:

第一行为一个数字n,代表下面有多少头奶牛(先输入的奶牛优先度高)
下面n行,每行包括两个数字,分别是奶牛的到达时间和奶牛所需的吃草时间.

输出:

一个数字,所有牛的总共的等待时间.

题目分析:

我们先按照到达时间,把每头牛排序.
用一个变量time来记录当前时间.
首先第一头到达的牛开始吃草.
一直吃到结束,time更新.
这时判断有哪些牛在time之前到达,把他们都放进一个优先队列中(队列按优先度排序).

然后从队列中取出优先度最高的牛,让他吃草,更新时间(同时更新等待时间).
然后再把time之前到达的奶牛入队.

直到队列为空并且所有奶牛都已经入过队.
最后把记录等待时间的变量输出.

代码:

#include<bits/stdc++.h>

using namespace std;

long n, now, maxTime;

class cow{
public:
    long a, t, num;
    bool operator < (const cow & C) const{
        return num > C.num;
    }
} cows[100100];

bool cmp(cow c1, cow c2){
    return c1.a < c2.a;
}

priority_queue <cow> wait;

int main(){
    scanf("%ld", &n);
    for(long i = 0; i < n; cows[i].num = ++i) scanf("%ld%ld", &cows[i].a, &cows[i].t);

    sort(cows, cows+n, cmp);
    now = 0;
    maxTime = 0;
    long i = 0;
    while(i < n || !wait.empty()){
        if(now == 0){
            wait.push(cows[i++]);
        }else{
            while((i < n && now > cows[i].a) || wait.empty()){
                wait.push(cows[i++]);
            }
        }
        if(maxTime < now - wait.top().a){
            maxTime = now - wait.top().a;
        }
        if(now < wait.top().a)
            now = wait.top().a + wait.top().t;
        else
            now = wait.top().t + now;
        wait.pop();
    }
    printf("%ld\n", maxTime);
}
路畅车机系统升级包,路畅固件4.0.9 版本CN-A6-GBDS-BC8-VIN-256-V1.51 。版本号含义注释:  128,256,512指的是内存使用。  1.BC8:指NK是用于8311的蓝牙模块,且是用CSR WPP协议栈的。  2.BDS: 指是使用TriG的RF,配置为北斗独立定位模式的NK。  3.GBDS:是指GPS+BDS混合定位模式的NK。  4.GLN:是指GLONASS单独定位模式的NK。  5.GGLN:是指GPS+GLONASS混合定位的NK。  6.TL:使用TriG Lite的RF射频,只能使用GPS Only定位模式的NK。  7.DEBUG 或 DBG: 使用COM0输出调试信息的NK,只用于调试使用。  8.VIN: video in,指使用TW9912芯片的导航版,具备VIP功能。  9.Q3: 奥迪Q3专用NK。  10.AUO: 雅阁专用NK。  11.G: 使用TriG RF的GPS,GNSS MODE为GPS ONLY模式, 简单就是指单模的GPS的NK。  12.CRI: 凌派专用NK。  13.U1: 强制使用USB1.1 fullspeed 速率的模式,一般用于原车USB和USB IPOD。  14.X1: 使用1024*480分辨率的NK。  15.ADV: 使用ADV的视频输入芯片,跟9912功能一样,带ADV则不带VIN。  16.N128:指使用128MB的NAND FLASH。  17.XGA: 指蒙迪欧大屏使用的NK,768x1024分辨率的。  18.HDMI: 指支持CH7102的HDMI功能。  19.SFWE: 指使用SFWE蓝牙协议栈的NK。  20:A3: 指奥迪A3专用,分辨率为1024x600的NK。  21: GT: 使用德普特GT9XX系列的电容触摸屏。  22: D1: D1代表1024x600分辨率的LCD屏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值