其实是个模拟题。。

/*
每个人都有一个口渴时间,如果口渴时,其前面没有人在排队,那么其就去排队接水,反之一直等到前面没有人排队
问每个人接完水的时间
每个没轮到的人都在位置上等前面的人接完水,然后他再去排队
先把每个人按照口渴时间排序
设新加入队列的人是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. Halo(一)

    @EnableJpaAuditing 审计功能(启动类配置) 在实际的业务系统中,往往需要记录表数据的创建时间.创建人.修改时间.修改人. 每次手动记录这些信息比较繁琐,SpringDataJpa 的 ...

  2. c++ 获取文件图标,类型名称,属性 SHGetFileInfo

    SHGetFileInfo是一个相当实用的Windows API函数. // [MoreWindows工作笔记4] 获取文件图标,类型名称,属性 SHGetFileInfo #include < ...

  3. 移动 web 端屏幕适配 - rem

    前言 最近整理了一下以前学习前端的笔记,发现自己对移动 web 端屏幕适配(rem)这一块并没有真正理解,只是会用.接下来,把自己的一些对移动 web 端屏幕适配(rem)的思考记录下来. rem 介 ...

  4. 聊一聊 http2.0

    1. 我们认识http 协议,从最初的,客户端与服务器进行通讯,基于连接发生的请求与响应 在HTTP1.0时代,连接无法复用,每次下完单,都被强制登出/关机,下一次下单,就得重新登录. 为了解决htt ...

  5. ROS的使用

    1.输入roscore时出现错误:Unable to contact my own server at 修改: 在.bashrc文件中添加以下内容: export ROS_HOSTNAME=local ...

  6. windows系统查看端口占用

    netstat -ano #列出所用端口使用情况 netstat -aon|findstr "端口号"  #查询指定端口 tasklist|findstr "PID&qu ...

  7. Spring系列.@EnableRedisHttpSession原理简析

    在集群系统中,经常会需要将Session进行共享.不然会出现这样一个问题:用户在系统A上登陆以后,假如后续的一些操作被负载均衡到系统B上面,系统B发现本机上没有这个用户的Session,会强制让用户重 ...

  8. HTML-参考手册: HTML 全局属性

    ylbtech-HTML-参考手册: HTML 全局属性 1.返回顶部 1. HTML 全局属性 New : HTML5 新属性. 属性 描述 accesskey 设置访问元素的键盘快捷键. clas ...

  9. upc组队赛3 Congestion Charging Zon【模拟】

    Congestion Charging Zon 题目描述 Tehran municipality has set up a new charging method for the Congestion ...

  10. 把数字翻译成字符串 --剑指offer 46题

    # 给一个字符串,按如下规则把它翻译成字符串:1翻译成a,2翻译成b,...25翻译成z:一个数可以有多种翻译方式,比如122可以翻译成abb和kb还可以翻译成aw即3种翻译方式.计算一个数字有几种翻 ...