其实是个模拟题。。

/*
每个人都有一个口渴时间,如果口渴时,其前面没有人在排队,那么其就去排队接水,反之一直等到前面没有人排队
问每个人接完水的时间
每个没轮到的人都在位置上等前面的人接完水,然后他再去排队
先把每个人按照口渴时间排序
设新加入队列的人是now,那么口渴时间在 now.s->now.t 之间的所有人都会进入等待状态
在now前面的人会直接去排队,在now后面的人会继续等待
当这条队列都排完后,那些等待状态中的,最靠前的人会去排队 依次类推,用队列维护排队的人,用优先队列维护等待的人 */
#include<bits/stdc++.h>
#include<queue>
using namespace std;
#define N 100005
#define ll long long
#define INF 0x3f3f3f3f3f3f3f3f ll n,ans[N],P;
struct Node{
ll s,id;
bool operator<(Node b)const {
return id>b.id;
}
}p[N];
int cmp(Node a,Node b){
if(a.s==b.s)return a.id<b.id;
return a.s<b.s;
}
int main(){
cin>>n>>P;
for(int i=;i<=n;i++){
cin>>p[i].s;
p[i].id=i;
}
sort(p+,p++n,cmp); queue<Node>q;
priority_queue<Node>pq;
int index=,finish=; pq.push(p[]);
ll time=p[].s;
while(){
Node cur;
if(pq.size()){
cur=pq.top();
pq.pop();
}
else {
cur=p[++index];
time=p[index].s;//时间直接跳过去
}
q.push(cur); while(index+<=n){
Node tmp=q.back();
if(p[index+].s<=time+1ll*q.size()*P){
//放到pq里
if(p[index+].id>tmp.id)
pq.push(p[++index]);
//放到q里
else q.push(p[++index]);
}
else break;
} //q队列的的都可以出队了
while(q.size()){
Node tmp=q.front();q.pop();
time+=P;
ans[tmp.id]=time;
finish++;
}
if(finish==n)break;
} for(int i=;i<=n;i++)
cout<<ans[i]<<' ';
}

排序+模拟+优先队列——cf1248E的更多相关文章

  1. 数据结构和算法(Golang实现)(24)排序算法-优先队列及堆排序

    优先队列及堆排序 堆排序(Heap Sort)由威尔士-加拿大计算机科学家J. W. J. Williams在1964年发明,它利用了二叉堆(A binary heap)的性质实现了排序,并证明了二叉 ...

  2. hdu6136[模拟+优先队列] 2017多校8

    有点麻烦.. /*hdu6136[模拟+优先队列] 2017多校8*/ #include <bits/stdc++.h> using namespace std; typedef long ...

  3. Milking Cows 挤牛奶 USACO 排序 模拟

    1005: 1.2.1 Milking Cows 挤牛奶 时间限制: 1 Sec  内存限制: 128 MB提交: 15  解决: 9[提交] [状态] [讨论版] [命题人:外部导入] 题目描述 1 ...

  4. 【BZOJ 1216】 1216: [HNOI2003]操作系统 (模拟+优先队列)

    1216: [HNOI2003]操作系统 Description 写一个程序来模拟操作系统的进程调度.假设该系统只有一个CPU,每一个进程的到达时间,执行时间和运行优先级都是已知的.其中运行优先级用自 ...

  5. HDU_1285_拓扑排序(优先队列)

    确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  6. hdu 5437 Alisha’s Party 模拟 优先队列

    Problem Description Princess Alisha invites her friends to come to her birthday party. Each of her f ...

  7. Alisha’s Party---hdu5437(模拟+优先队列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5437 题意:公主有k个朋友来参加她的生日party,每个人都会带价值为v[i]的礼物过来,在所有人到齐 ...

  8. HDU 1103 Flo's Restaurant(模拟+优先队列)

    Flo's Restaurant Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  9. hdu-5596 GTW likes gt(模拟+优先队列)

    题目链接: GTW likes gt  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 131072/131072 K (Java/Othe ...

随机推荐

  1. Vue学习笔记【28】——Vue路由(使用 children 属性实现路由嵌套)

    使用 children 属性实现路由嵌套   <div id="app">    <router-link to="/account"> ...

  2. Oracle中start with...connect by (prior)子句的用法

    connect by 是结构化查询中用到的,基本语法是:select … from tablenamestart with 条件1connect by 条件2where 条件3; 例:select * ...

  3. 3D打印切片软件Cura及CuraEngine原理分析

    引言 年初开始进入3D打印行业,受命以Cura为基础,研发一款自主的3D打印切片软件. 自主研发要取其长处,补其不足,首先自然是要搞清楚Cura到底做了什么,读Cura的代码是必需的.我一向都觉得比起 ...

  4. 6.zabbix微信告警3.2

    原文地址: https://blog.cactifans.com/2016/01/27/zabbix%E5%BE%AE%E4%BF%A1%E5%91%8A%E8%AD%A6/ pdf : 链接: ht ...

  5. oracle 批处理 bulk collect 带来的性能优势

    create table -- drop table tmp_20190706_220000-- truncate table tmp_20190706_220000 create table tmp ...

  6. elasticsearch+kibana+fluentd 日志搜集集群搭建

    使用fluentd来搜集Nginx日志,准备3台服务器,列表如下 node1 elasticsearch/kibana/td-agent node2 td-agent/nginx node3 td-a ...

  7. 人物-IT-程维:百科

    ylbtech-人物-IT-程维:百科 程维,滴滴出行创始人兼CEO,全面负责滴滴公司的战略规划和运营管理. 程维曾在阿里巴巴集团任职八年,于区域运营和支付宝B2C业务上取得成功的管理经验.2012年 ...

  8. upc组队赛4 TV Show Game 【2-SAT】

    TV Show Game 题目描述 Mr. Dajuda, who is famous for a TV show program, occasionally suggests an interest ...

  9. activiti7查询当前用户任务列表

    package com.zcc.acvitivi; import org.activiti.engine.ProcessEngine;import org.activiti.engine.Proces ...

  10. Tomcat启动脚本(3)setclasspath.bat

    @echo off rem Licensed to the Apache Software Foundation (ASF) under one or more rem contributor lic ...