紫书第五章习题 5-16 UVa 212 - Use of Hospital Facilities

UVA 212 Use of Hospital Facilitis 第五章剩下的三个题都不会做了,只好来死扣这个模拟题。    其实这个题理清思路之后并没有那么难,但有几点比较坑(1,这个题是多组数据!多组数据!多组数据!每组数据后空一行,困扰我多次的WA也这个原因。2,输出的两个表之    间空一行。 3,人数有可能为零,所以计算使用率时要注意)    思路:1,分两步来,首先模拟手术过程,再是复过程。                2,手术时,是先用完空 阅读详情

出处:https://blog.youkuaiyun.com/xienaoban/article/details/52895020

题目链接:https://vjudge.net/contest/231030#problem/P

题意:模拟患者做手术。 
其条件为:医院有Nop个手术室、准备手术室要Mop分钟,另有Nre个恢复用的床、准备每张床要Mre分钟,早上Ts点整医院开张,从手术室手术完毕转移到回复床要Mtr分钟。现在医院早上开张了,给你一张患者的表,有Npa个患者等着做手术,每个患者的的信息有:名字、做手术需要的时间、恢复需要的时间。只要有空的手术室位就安排患者进去,优先安排门牌号低的。若多人同时竞争,输入列表靠前的先进。进入恢复室的优先顺序是,也是优先安排床号靠前的床,同时做完手术的人按照手术室的门牌号小的 (很奇葩的设定)优先。


//UVa212 - Use of Hospital Facilities
//Accepted 0.000s
//#define _XIENAOBAN_
#include<algorithm>
#include<iostream>
#include<iomanip>
#include<utility>
#include<string>
#include<vector>
#include<queue>
#define ipt cin
#define opt cout//just for convenience and appearance, because size("cout"+" ")=5, which is longer than a tab(which is 4)
#define time_convert(t) setw(2) << (t / 60) << ':' << setfill('0') << setw(2) << (t % 60) << setfill(' ')
using namespace std;

struct ROOM {
    int id, at;
    ROOM() {}
    ROOM(int a, int b) :id(a), at(b) {}
    bool operator <(const ROOM& that) const {
        if (at != that.at) return at > that.at;
        return id > that.id;
    }
};
struct PATIENT {
    string name;
    int id, room, bed, top, tre, t1, t2, t3, t4;
};

int Nop, Nre, Ts, Te, Mtr, Mop, Mre, Npa;


int main()
{
#ifdef _XIENAOBAN_
#define gets(T) gets_s(T, 66666)
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
#endif

    ios::sync_with_stdio(false);
    while (ipt >> Nop) {
        ipt >> Nre >> Ts >> Mtr >> Mop >> Mre >> Npa;
        Te = 0, Ts *= 60;
        vector<int> Top(Nop + 1, 0), Tre(Nre + 1, 0);
        vector<PATIENT> Info(Npa + 1);
        vector<int> Bre(Nre + 1, Ts);
        priority_queue<ROOM> Rop;
        for (int i(1);i <= Nop;++i) Rop.push(ROOM(i, Ts));

        //For all the operating rooms
        for (int N(1);N <= Npa;++N) {
            auto& now(Info[N]);
            now.id = N;
            ROOM op(Rop.top());
            Rop.pop();
            ipt >> now.name >> now.top >> now.tre;
            now.t1 = op.at;
            now.t2 = now.t1 + now.top;
            now.t3 = now.t2 + Mtr;
            now.t4 = now.t3 + now.tre;
            now.room = op.id;
            op.at = now.t2 + Mop;
            Top[op.id] += now.top;
            Rop.push(op);
        }
        sort(Info.begin() + 1, Info.end(), [](PATIENT& a, PATIENT& b)->bool
        {if (a.t2 != b.t2) return a.t2 < b.t2;return a.room < b.room;});//Sort by t2

        //For all the recovery rooms
        for (int N(1);N <= Npa;++N) {
            auto& now(Info[N]);
            int re;
            for (re = 1;re <= Nre;++re)
                if (Bre[re] <= now.t2) break;
            now.bed = re;
            Bre[re] = now.t4 + Mre;
            Tre[re] += now.tre;
            if (Te < now.t4) Te = now.t4;
        }
        sort(Info.begin() + 1, Info.end(), [](PATIENT& a, PATIENT& b) {return a.id < b.id;});//Sort by id

        //Output
        opt << " Patient          Operating Room          Recovery Room\n"
            << " #  Name     Room#  Begin   End      Bed#  Begin    End\n"
            << " ------------------------------------------------------\n";
        for (int N(1);N <= Npa;++N) {
            auto& now(Info[N]);
            opt << setw(2) << N << "  " << left << setw(10) << now.name << right << setw(2)
                << now.room << "   " << time_convert(now.t1) << "   " << time_convert(now.t2) << "     " << setw(2)
                << now.bed << "   " << time_convert(now.t3) << "   " << time_convert(now.t4) << '\n';
        }
        opt << '\n'
            << "Facility Utilization\n"
            << "Type  # Minutes  % Used\n"
            << "-------------------------\n";
        for (int N(1);N <= Nop;++N) {
            opt << "Room " << setw(2) << N << setw(8) << Top[N]
                << setw(8) << fixed << setprecision(2) << (Top[N] * 100.0 / (float)(Te - Ts)) << '\n';
        }
        for (int N(1);N <= Nre;++N) {
            opt << "Bed  " << setw(2) << N << setw(8) << Tre[N]
                << setw(8) << fixed << setprecision(2) << (Tre[N] * 100.0 / (float)(Te - Ts)) << '\n';
        }
        cout << endl;
    }
    return 0;
}
附:测试数据 
10 30 01 16 15 1 30 
Jones 
90 140 
Smith 
10 200 
Thompson 
60 75 
Albright 
40 82 
Poucher 
33 209 
Comer 
10 201 
Perry 
3 188 
Page 
111 120 
Roggio 
69 100 
Brigham 
42 79 
Nute 
22 71 
Young 
38 50 
Bush 
26 40 
Cates 
120 32 
Johnson 
10 2 
Jones 
28 140 
Smith 
120 200 
Thompson 
23 75 
Albright 
19 82 
Poucher 
133 209 
Comer 
74 101 
Perry 
93 188 
Page 
111 223 
Roggio 
69 122 
Brigham 
42 79 
Nute 
22 71 
Young 
38 140 
Bush 
26 121 
Cates 
120 248 
Johnson 
10 50

MobaXterm终端工具个人学习版安装包及常用配置备份 资源包含 MobaXterm 个人版的安装包以及日常运维常用的基础配置备份文件。适用于网络工程师及运维人员用于日常的服务器管理、SSH 连接及串口调试。 压缩包内附带了个人整理的软件使用技巧与配置说明(仅供个人学习参考)。请各位同行下载后注意,技术工具请尽量支持官方正版,本资源仅供个人测试与交流使用,切勿用于商业环境。 立即下载

相关推荐

机械臂的「抽风」自救指南:从万向节死锁到毫米级丝滑抓取

机械臂的「抽风」自救指南:从万向节死锁到毫米级丝滑抓取

紫书5-16UVa212

构造事件队列,依次处理即可。 注意:如果两人同时做完手术,则手术室序号小的人优先进入恢复室 #include<bits/stdc++.h> using namespace std; struct Event{ int time,id,type; Event(int t,int id,int type):time(t),id(id),type(type){} bool operator<(const Event&e)const {return time>

weixin_46273288的博客 202

科技中介服务机构如何借助平台提升技术撮合服务的专业性与响应速度?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

UVA - 212 Use of Hospital Facilities

/* 借鉴了: http://blog.youkuaiyun.com/xienaoban/article/details/52895020 收获 & 总结: 1. cout的输出格式控制 http://blog.youkuaiyun.com/xienaoban/article/details/52895020 2.vector可在定义时,指定大小并同一初始化 http://blog

怕什么真理无穷?进一寸有一寸的欢喜~ 635

产业园区如何利用AI技术提升科技成果转化服务的响应速度与转化成功率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

Python 逆向解析知乎盐选反爬字体,实现内容精准还原

本文详细解析了知乎盐选内容的反爬字体机制,并提供了使用Python逆向解析WOFF字体文件的完整方案。通过fontTools库构建解码字典,实现乱码文本的精准还原,帮助开发者应对动态字体策略,同时强调法律与道德风险。

weixin_29268385的博客 1295

UVA 212 - Use of Hospital Facilities

有坑的有技巧的题目。首先来谈谈容易被坑到的几个地方:第一,记得考虑输入的时候人数为零的情况;第二,进入康复室的床位的排序,首先是按照病人从手术室出来的时间(注意是出来的时间,不能加入从手术室到康复室的路上的时间)与此时康复室的时间进行比较,如果从手术室出来的时间小于等于(注意是小于等于)康复室的可用时间,那么就为该病人分配床位,否则就不分配;第三点,从手术室出来的病人首先按照出手术室的时间进行排序

zju2016的博客 656

stm32教程之三重ADC交错采样

ps:本文基于stm32F407ZGT6单片机 stm32F4单片机单通道采集的最大采样率为2.4M,所以有时会难以满足较高频率的采样,于是查阅芯片手册,发现stm32F4支持多重ADC采集,利用每个通道的转换时间,错位采样,从而提高采样率,最大把采样率开到2.4*3=7.2M. (去年初学ADC时研究的,基于cube和HAL库的三重ADC交错采样参考资料不多,我也是研究了一段时间,写下这篇博客希望可以帮助到更多人。) 示意图如下: 以下是官方例子的说明, In this ex...

weixin_52178036的博客 8877

习题5-16 医院设备利用 UVa212

1.题目描述:点击打开链接 2.状态及可能原因:WA;可能是输出格式不对,个人认为逻辑上应该没有大的问题。 3.代码: #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #incl

Skyline 1945

手把手教你用Switched-Capacitor Converter实现高效DC-DC转换(附常见拓扑对比)

本文详细介绍了开关电容转换器(SC)在高效DC-DC电源设计中的应用,对比了四种常见拓扑结构的优缺点,并提供了损耗分析与效率优化的实战技巧。通过无电感设计,SC转换器在5G模块和可穿戴设备中展现出超高功率密度和微小体积的优势,是电源管理领域的革命性技术。

weixin_30790841的博客 273

微信小程序如何转云开发

小程序转云开发

zhangxiaobai___的博客 3914

UVA-212 医院设备利用 题解答案代码 算法竞赛入门经典第二版

GitHub - jzplp/aoapc-UVA-Answer: 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 这也是一道根据根据时间做出行为的题目,我的做法和之前的UVA822类似,也是用优先队列实现。 参考: UVA-822 客户中心模拟 题解答案代码 算法竞赛入门经典第二版_漂流瓶jz的博客-优快云博客 这道题我一开始定义了很多种事件类型,并根据不同的行为做判断(可见AC代码2) 方法本身可行,但是根本没必要。经过简化后的AC代码1,实际上只需要两种类型的事件即可: 1. 离开手

Coding home - 漂流瓶jz 508

卫星测试科普(三):卫星载荷的核心测试设备探秘

总的说来,卫星芯片与元器件,部组件与单机,整机与子系统,系统与整星的设计、定型、制造、验证、总装、发射、在轨等环节都离不开各种测试场景,对于这些卫星测试场景而言,“射频三大件”与高速数字示波器是构成强大测试系统的基础。卫星通信信号生成:覆盖Ka、Q等波段,具备扫频、脉冲、数字调制、噪声信号、雷达信号、数据链信号、OFDM 等多种信号库,用于测试和验证卫星电子设备的电气性能、频率响应、抗干扰能力等。卫星的通信需要高效、快速地传输大量数据,高速信号的质量至关重要,如果卫星信号不佳,卫星就会出现故障或者隐患。

spwbjss的博客 2318

UVA 212 Use of Hospital Facilities

题目链接:https://vjudge.net/problem/UVA-212 题意摘自《算法禁赛入门经典》 题目大意   医院里有 N(N ≤ 10)个手术室和 M(M ≤ 30)个恢复室。每个病人首先会被分配到一个手术室,手术后会被分配到一个恢复室。从任意手术室到任意恢复室的时间均为 t1,准备一个 手术室和恢复室的时间分别为 t2 和 t3 (一开始所有手术室和恢复室均准备好...

weixin_30287169的博客 211

设计智能化的企业并购目标筛选多维度评估模型

企业并购是企业扩张和战略调整的重要手段,其目的在于实现资源的整合、优势互补和效率提升。评估指标单一:传统评估方法主要依赖财务指标,如净利润、市场份额等,忽视了企业其他重要的非财务指标,如品牌价值、客户满意度等。主观性较强:评估过程中,往往依赖于评估人员的经验和直觉,缺乏客观性,导致评估结果可能存在偏差。评估效率低:传统的评估方法通常需要大量的人力和时间,效率较低,难以应对大规模并购项目的需求。因此,设计一种智能化的企业并购目标筛选多维度评估模型,显得尤为必要。

SuperAGI2025 1034

第14.5章 高翔博士最新开源框架Lightning-LM源码解读(五):揭秘位姿图优化核心模块,从数学原理到代码实现

本文介绍了Lightning-LM框架中的位姿图优化(PGO)模块实现。该模块通过融合多源定位信息(激光定位、激光里程计、DR等),构建并优化位姿图来获得更精确的位姿估计。 主要内容包括: 模块概况与数据流程:初始化配置→添加PGO帧→分配位姿→优化求解→更新位姿→滑动窗口 16个核心函数详解:从构造函数到边缘化处理,涵盖完整的PGO工作流程 关键技术点:噪声参数设置、优化问题构建、约束添加、异常值处理等 关键数据结构:帧队列管理、顶点和边构建、优化统计信息收集 该PGO模块采用增量式优化方式,支持多种约束

行知SLAM 1216

UVA ~ 212 ~ Use of Hospital Facilities (优先队列+模拟)

题意:医院里有n (n&lt;10) ↑手术室和m (m&lt;30) 个恢复室。每个病人首先会被分配时一个手术室,手术后会被分配到一个恢复室。从任意手术室到任意恢复室的时间均为t1,准备个手术室和恢复室的时间分别为t2和t3(一开始所有手术室和恢复室均准备好,只有接持完一个病人之后才需要为下一个病人准备)。    k 名(k&lt;=100) 病人按照花名册顺序排队,T点钟准时开放手术室。每当有...

张松超的博客 743

大津法(OTSU)点云强度信息分割

大津法(OTSU)是一种灰度图像自适应的阈值分割方法,大津法根据图像的灰度分布,将图像分成背景和前景两部分,前景就是需要按照阈值分割出来的部分。由于点云的强度信息的特性,也可以利用此方法进行分类,但需要保证信息干扰较少,例如道路标线分割等场景较为适用。

qq_48694523的博客 965

#212 Space Replacement

题目描述: Write a method to replace all spaces in a string with %20. The string is given in a characters array, you can assume it has enough space for replacement and you are given the true lengt

易水居 415

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

212

#include #include #include #include using namespace std; int main() { freopen("in.txt","r",stdin); vector v1,v2,v3; int x; while(cin>>x&&x!=-1){ v1.push_back(x); } bool

vczhfan的专栏 434

习题5-16 医院设备利用(Use of Hospital Facilities,ACM/ICPC World Finals 1991,UVa212)

原题链接:https://vjudge.net/problem/UVA-212 分类:<algorithm> 备注:输出格式,水题 前言:输出格式懒得数的直接看下面代码,很清楚了,注意每组数据最后还要输出空行。这UVA的PDF让我们通过数dash来数空格我能理解,但是空行是多少肉眼看不出来啊,居然两个表之间只有一个空行,还不说明清楚,正式比赛也会这样吗?还有第二个表开头并不要一个空格,...

TK_wang_的博客 358

Use of Hospital Facilities

Use of Hospital Facilities 来源:UVA - 212 题目描述: County General Hospital is trying to chart its course through the troubled waters of the economy and shifting population demographics. To support the planning requirements of the hospital, you have been asked

computering666的博客 238

UVA 211

Thinking: Use dfs to solve this problem. Try all the possibilities row by row. The lay out control is not so clear and you can use udebug to adjust them. AC code:#include #include using nam

wfz0755的博客 528

212 - Use of Hospital Facilities

County General Hospital is trying to chartits course through the troubled waters of the economy and shifting populationdemographics. To support the planning requirements of the hospital, you havebeen

gaoxiangnumber1——Gao Xiang's Blog 799

习题5-16(uva-212)

#include <iostream> #include <istream> #include <sstream> #include <vector> #include <stack> #include <list> #include <map> #include <set> #include <deque> #include <queue> #include <cstring&gt

小刀刺大熊 197
上一篇: 紫书第五章习题 5-8 UVA230-图书馆管理
下一篇: 紫书第五章习题 5-15 UVa 12333 - Revenge of Fibonacci
JXUFE_ACMer
博客等级 码龄9年 20粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值