UVALive 6440 Emergency Handling 优先队列
2014-08-11 12:06
309 查看
题目连接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4451
题目意思:给你一个公式计算每个病人的危机程度,之后给你一定量的的admission表示这个时间允许治疗一个病人,让你每次输出当前时间下,危险程度最高的病人。
分析:可以对公式预处理一下,存一个处理 S= st0 - R * T0, 这样子,就相当于每个人都是进来的初始时间一样。 公式变成 ans =S + R * T ; 现在就只剩下 S 和 R这两个变量。 我们可以每次按照 相同的R 值, 比较S 找出 S 最大的值 就是每个人最危险的。 然后比较这些 S 输出 最大的那个S。 可以用默认的优先队列。直接就能输出相同R下S的最大值。
题目意思:给你一个公式计算每个病人的危机程度,之后给你一定量的的admission表示这个时间允许治疗一个病人,让你每次输出当前时间下,危险程度最高的病人。
分析:可以对公式预处理一下,存一个处理 S= st0 - R * T0, 这样子,就相当于每个人都是进来的初始时间一样。 公式变成 ans =S + R * T ; 现在就只剩下 S 和 R这两个变量。 我们可以每次按照 相同的R 值, 比较S 找出 S 最大的值 就是每个人最危险的。 然后比较这些 S 输出 最大的那个S。 可以用默认的优先队列。直接就能输出相同R下S的最大值。
#include <stdio.h> #include <iostream> #include <math.h> #include <string.h> #include <stdlib.h> #include <algorithm> #include <bitset> #include <queue> #define MIN (1<<30)-1 #define exp 1e-8 using namespace std; #define ll long long struct pat{ int st,r; }p[100086]; int Max[105],maxx; priority_queue < int > q[110]; int main() { int i,j; int st,t0,r,a; int T,n; scanf("%d",&T); for(int t=1;t<=T;t++) { for(i=0;i<=100;i++) Max[i]=-MIN; for(i=0;i<=110;i++) //清空队列 初始化 { while(!q[i].empty()) q[i].pop(); } printf("Case #%d:\n",t); scanf("%d",&n); char str; for(i=0;i<n;i++) { getchar(); j = 0; scanf("%c", &str); if(str == 'P') { scanf("%d%d%d",&t0,&st,&p[j].r); p[j].st = st - t0 * p[j].r; q[p[j].r].push( p[j].st ); } else if(str == 'A') { scanf("%d",&a); int s; int ans = -MIN , num; for( s = 0; s<=100 ; s++) { if(!q[s].empty()) { if(ans <= q[s].top() + (a * s)) { ans = q[s].top() + (a * s); num = s; } } } q[num].pop(); printf("%d %d\n", ans , num); } } } return 0; }
相关文章推荐
- UVALive - 3135 Argus 优先队列
- UVALive 6093 Emergency Room --优先队列实现的模拟
- UVALive - 2757 Supermarket 贪心+优先队列
- UVALive 7274 Canvas Painting (优先队列)
- Beijing 2004 / UVa 1203 / UVALive 3135 / ZOJ 2212 Argus (优先队列)
- UvaLive 4254 Processor 优先队列
- UVALive - 3135 Argus——优先队列
- UvaLive 6440 - Emergency Handling(数据结构)
- Problem on Group Trip UVALive - 7219 (模拟+优先队列处理)
- UVALive - 3135 Argus 优先队列
- UVaLive 4254 Processor (二分+优先队列)
- uvalive4254(贪心+优先队列)
- UVALive3638 UVA12100 POJ3125 HDU1972 Printer Queue(优先队列+队列)
- UVALive3135 UVA1203 POJ2051 ZOJ2212 Argus【优先队列+优先搜索】
- UVALive - 4254 Processor 二分+优先队列
- UVALive 4290 Easy Climb(dp + 精简状态 + 优先队列)
- UVALive 3135 Argus(优先队列)
- UVALive 3135 Argus(优先队列)
- UVALive 6485 Electric Car Rally (BFS,优先队列)
- UVaLive 2757 Supermarket (贪心+优先队列)