UVALive - 6440(模拟)
题目链接:https://vjudge.net/contest/241341#problem/G
题目大意:输入一个N,n次操作。对于第一种操作增加一个病人,告诉病人的t0,st0,r。第二种操作,在时间t,选取一个病情最严重的病人进行医治。病人的严重情况为S(t)=st0+r(t-t0)。如果病人严重情况相同,选r最大的进行医治。(1<=N <=100 000),(0<=r<=100。对于第二种操作输出被治疗的病人。
解题思路:因为r的范围比较小,是0-100,而且对于相同r的病人来说,他们的病情严重程度的相对大小不会因为时间的改变而改变,所以我们可以直接定义100多个优先队列,把r相同的病人都放到同一个优先队列当中,然后队列里存什么呢,因为st0-r*t0是一个定值,所以我们的优先队列就存st0-r*t0,出现‘P’,我们就进队列,只要出现‘A’时,我们就对着100多个优先队列遍历一遍,而且每个优先队列只要取出队首元素+t*r,看它是否会大于等于我们的最大值,记录好所在的优先队列,遍历完之后进行相应的输出,删除对应的队首元素即可。
附上代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string.h>
#include<vector>
#include<queue>
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const int maxn=;
int n,t;
priority_queue<int> q[]; void init() //初始化
{
for(int i=;i<=;i++)
{
while(!q[i].empty())
q[i].pop();
}
} int main()
{
int T;
scanf("%d",&T);
int kase=;
while(T--)
{
kase++;
init();//清空所有队列元素
scanf("%d",&n);
printf("Case #%d:\n",kase);
char c;
for(int i=;i<n;i++)
{
cin>>c;
if(c=='P')
{
int t0,st0,r;
scanf("%d%d%d",&t0,&st0,&r);
q[r].push(st0-t0*r); //入队
}
if(c=='A')
{
scanf("%d",&t);
int st=-inf,k;
for(int i=;i<=;i++)
{
if(!q[i].empty())
{
if(q[i].top()+t*i>=st) //记住要‘=’,因为i变大了,即r变大了
{
st=q[i].top()+t*i;
k=i;
}
}
}
q[k].pop();
printf("%d %d\n",st,k);
}
}
}
return ;
}
UVALive - 6440(模拟)的更多相关文章
- UVALive - 6440
题目链接:https://vjudge.net/contest/241341#problem/G Indonesia, as well as some neighboring Southeast As ...
- UESTC 2016 Summer Training #6 Div.2
我好菜啊.. UVALive 6434 给出 n 个数,分成m组,每组的价值为最大值减去最小值,每组至少有1个,如果这一组只有一个数的话,价值为0 问 最小的价值是多少 dp[i][j] 表示将 前 ...
- 模拟/字符串处理 UVALive 6833 Miscalculatio
题目传送门 /* 模拟/字符串处理:主要是对*的处理,先把乘的预处理后再用加法,比如说是:1+2*3+4 = 1+..6+4 = 11 */ #include <cstdio> #incl ...
- UVALive - 6269 Digital Clock 模拟
UVALive - 6269 Digital Clock 题意:时钟坏了,给你一段连续的时间,问你现在可能的时间是多少. 思路:直接模拟,他妈的居然这场就跪在了这题,卧槽,他妈的就在111行,居然多打 ...
- UVALive 6093 Emergency Room --优先队列实现的模拟
题意:给n个医生,这些医生有一个上班时间,然后给一些病人,病人有一个到达的时间,以及一些诊断,诊断有property(优先级)和duration(诊断时间)这两个属性,每个病人可能要诊断多次,最后问每 ...
- UVALive 6257 Chemist's vows --一道题的三种解法(模拟,DFS,DP)
题意:给一个元素周期表的元素符号(114种),再给一个串,问这个串能否有这些元素符号组成(全为小写). 解法1:动态规划 定义:dp[i]表示到 i 这个字符为止,能否有元素周期表里的符号构成. 则有 ...
- UVALive 5880 Vigenère Cipher Encryption (模拟)
Stack Machine Executor 题目链接: http://acm.hust.edu.cn/vjudge/problem/26628 Description http://7xjob4.c ...
- UVALive 5888 Stack Machine Executor (栈+模拟)
Stack Machine Executor 题目链接: http://acm.hust.edu.cn/vjudge/problem/26636 Description http://7xjob4.c ...
- UVALive 4222 Dance 模拟题
Dance 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&pag ...
随机推荐
- mysql大数据量下的分页
mysql大数据量使用limit分页,随着页码的增大,查询效率越低下. 测试实验 1. 直接用limit start, count分页语句, 也是我程序中用的方法: select * from p ...
- [UWP 自定义控件]了解模板化控件(5.2):UserControl vs. TemplatedControl
1. UserControl vs. TemplatedControl 在UWP中自定义控件常常会遇到这个问题:使用UserControl还是TemplatedControl来自定义控件. 1.1 使 ...
- NFS共享文件系统部署
1. 概述 本篇博客主要是介绍如何安装和使用NFS服务. 2. 安装软件包 首先确认系统是否已经安装相应的软件包,执行命:rpm -qa | egrep "rpcbind|nfs-utils ...
- Html5前端笔记
获取Dpi 在 window.load中添加: (function(){ if (!window.screen.deviceXDPI){ var tmpNode = document.createEl ...
- Pair Project 1 elevator
结对编程——电梯调度 12061181 高孟烨 12061182 郝倩 1.结对编程的优缺点: 优点:结对编程可以结合两个人各自擅长之地,充分发挥两个人各自的优势,两个人一起合作效率会更高.一份工作两 ...
- Linux实践:文件破解
Linux实践:文件破解 标签(空格分隔): 20135321余佳源 一.掌握NOP.JNE.JE.JMP.CMP汇编指令的机器码 NOP:NOP指令即"空指令".执行到NOP指令 ...
- 同步手绘板——android端下笔后颜色变化
实现效果 : 在设计之初我们以为是改变笔线条的粗细来实现类似效果,后来通过找其他相关软件比对发现是不改变线条的粗细,通过改变透明度实现下笔后颜色的渐变,虽然已实现,但渐变效果很一般,不流畅,算法还待优 ...
- 伪静态与重定向--RewriteRule
环境:windows 10,phpstudy,sublime text.服务器使用Apache,网站根目录为E:\phpstudy\www\,所以.htaccess放在www目录下. RewriteR ...
- Redis应用一例(存证数量用计数器实现)
public Long getCreationCounter() { String host =PropertyUtils.getPropertyValue("redis.server.ho ...
- Chrome 启动参数列表
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --type=gpu-process --channel ...