其实是个模拟题。。

/*
每个人都有一个口渴时间,如果口渴时,其前面没有人在排队,那么其就去排队接水,反之一直等到前面没有人排队
问每个人接完水的时间
每个没轮到的人都在位置上等前面的人接完水,然后他再去排队
先把每个人按照口渴时间排序
设新加入队列的人是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. 根据mysql数据库 定义solr Schema.xml中配置业务域

    <!--product--> <field name="product_name" type="text_ik" indexed=" ...

  2. 「NOI2017」蚯蚓排队 解题报告

    「NOI2017」蚯蚓排队 这题真的草 你考虑\(k\)这么小,每次合并两个串,增加的有用串的数量是\(O(k^2)\)的,暴力加入这些串,求一下这些串的Hash值,塞到Hash表里面去 这里采用类似 ...

  3. 数组转xls格式的excel文件&数据转csv格式的excle

    /** * 数组转xls格式的excel文件 * @param array $data 需要生成excel文件的数组 * @param string $filename 生成的excel文件名 * 示 ...

  4. Vue 电影信息影评(豆瓣,猫眼)

    Vue电影信息影评网站 此网站是我的毕业设计,题目是"基于HTML5的电影信息汇总弄网站",由于最近在看Vue.js,所以就想用Vue.js来构建一个前端网站,这里code就不大篇 ...

  5. 浅析DirectX11技术带给图形业界的改变(一) 浅析DirectX11技术带给图形业界的改变【转】

    浅析DirectX11技术带给图形业界的改变(一) 浅析DirectX11技术带给图形业界的改变 前言:2009年10月23日,微软高调发布了其最新一代操作系统——Windows7,这款操作系统相对于 ...

  6. thinkcmf5 pc切换手机

    1.在simplewind\cmf\common.php 里找到“获取当前主题名”添加 if(cmf_is_mobile()){ $theme = config('cmf_mobile_default ...

  7. 队列Queue--数组实现

    队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表.进行插入操作的端称为队尾,进行删除操作的 ...

  8. Qwidget布局操作之QGridLayout(网格布局)

    QMainWindow并没有setLayout()函数,因此不能使用setLayout()函数来设置layout,需要使用间接的方法. 需要做的只是先定义一个QWidget对象,然后使用QMainWi ...

  9. uuid 去中心化的唯一性

    A Universally Unique IDentifier (UUID) URN Namespace https://tools.ietf.org/html/rfc4122.html A UUID ...

  10. python-前端JS

    JavaScript JS(JavaScript)和 JAVA是没有任何关系的,使前端语言动作的基础 特点:现在对前端所有的动作操作都是基于JS操作的.是一门逻辑语言 简单易用:可以使用任何文本编辑工 ...