看病要排队——HDU1873

简介: 看病要排队——HDU1873
第一次写这个题的时候感觉很麻烦,最后回头根据别人题解再来看就是模拟加队列的优先级问题,然后早上写的时候
因为if 和else if wa了好多次,最后好不容易写出来了就分享一下。

题目:


看病要排队这个是地球人都知道的常识。

不过经过细心的0068的观察,他发现了医院里排队还是有讲究的。0068所去的医院有三个医生(汗,这么少)同时看病。而看病的人病情有轻重,所以不能根据简单的先来先服务的原则。所以医院对每种病情规定了10种不同的优先级。级别为10的优先权最高,级别为1的优先权最低。医生在看病时,则会在他的队伍里面选择一个优先权最高的人进行诊治。如果遇到两个优先权一样的病人的话,则选择最早来排队的病人。现在就请你帮助医院模拟这个看病过程

Input

输入数据包含多组测试,请处理到文件结束。

每组数据第一行有一个正整数N(0<N<2000)表示发生事件的数目。

接下来有N行分别表示发生的事件。

一共有两种事件:

1:“IN A B”,表示有一个拥有优先级B的病人要求医生A诊治。(0<A<=3,0<B<=10)

2:“OUT A”,表示医生A进行了一次诊治,诊治完毕后,病人出院。(0<A<=3)

Output

对于每个"OUT A"事件,请在一行里面输出被诊治人的编号ID。如果该事件时无病人需要诊治,则输出"EMPTY"。

诊治人的编号ID的定义为:在一组测试中,"IN A B"事件发生第K次时,进来的病人ID即为K。从1开始编号。

Sample Input

7
IN 1 1
IN 1 2
OUT 1
OUT 2
IN 2 1
OUT 2
OUT 1
2
IN 1 1
OUT 1

Sample Output

2
EMPTY
3
1
1

题意描述:这个题是模拟以及队列优先级问题,一共三个医生十级优先级,级数越高看病越快,就说明越先出队,如果同样的优先级,就按队列先进先出。

**解题思路**:先定义三个串分别存入三个医生的病人,每来一个病人,就把他们的级数存入数组中,遇到out,就把出队列存入到另一个数组中,最后输入完了再输出病人的看病情况。

程序代码:

#include<stdio.h>
#include<string.h>
int main()
{
  char s[200];
  int a1[2010],a2[2010],a3[2010],b[2000];
  int cas,n,m,i,j,count,t;
  while(~scanf("%d",&cas))
  {
    int k=1;
    count=0;
    memset(a1,0,sizeof(a1));
    memset(a2,0,sizeof(a2));
    memset(a3,0,sizeof(a3));
    for(i=0;i<cas;i++)
    { 
      scanf("%s",s);
      if(s[0]=='I')
      {
        scanf("%d%d",&n,&m);
        if(n==1)
          a1[k++]=m;
        else if(n==2)
          a2[k++]=m;
        else 
          a3[k++]=m;
      }
      if(s[0]=='O')
      {
        scanf("%d",&t);
        int max=-1,c=0;
        if(t==1)
        {
          for(j=1;j<k;j++)
          {
            if(a1[j]!=0&&a1[j]>max)
            {
              max=a1[j];
              c=j;
            }
          }
          a1[c]=0;
          b[count++]=c;
        }
        else if(t==2)
        {
          for(j=1;j<k;j++)
          {
            if(a2[j]!=0&&a2[j]>max)
            {
              max=a2[j];
              c=j;
            }
          }
          a2[c]=0;
          b[count++]=c;
        }
        else if(t==3)
        {
          for(j=1;j<k;j++)
          {
            if(a3[j]!=0&&a3[j]>max)
            {
              max=a3[j];
              c=j;
            }
          }
          a3[c]=0;
          b[count++]=c;
        }
      }   
    }
    for(i=0;i<count;i++)
      {
        if(b[i]!=0)
          printf("%d\n",b[i]);
        else
          printf("EMPTY\n");
      } 
  }
  return 0;
} 
相关文章
|
JSON 数据格式
VSCode无法写入用户设置 请打开用户设置并清除错误或警告, 然后重式
VSCode无法写入用户设置 请打开用户设置并清除错误或警告, 然后重式
|
5月前
|
自然语言处理 JavaScript API
OpenClaw(Clawdbot)阿里云及本地部署喂饭级流程 + 百炼 Coding Plan 配置实操手册
OpenClaw的核心优势之一在于灵活的模型扩展性,而阿里云百炼Coding Plan为其提供了丰富的模型选择——涵盖千问系列、GLM、Kimi等主流模型,满足文本生成、代码开发、多模态交互等全场景需求。2026年,该套餐推出Lite与Pro两个版本,适配不同用户的使用量级,通过专属API Key与Base URL即可快速接入OpenClaw。
3661 9
|
5月前
|
人工智能 供应链 安全
AI 赋能下网络攻击演化机理与企业协同防御体系研究
本文基于慕尼黑再保险2026年报告,剖析AI驱动下钓鱼、勒索软件、Agentic AI自主攻击及虚假信息等新型威胁机理,提出覆盖检测、防御、响应、保险的一体化协同方案,并提供可工程化代码实现,助力企业构建智能韧性安全体系。(239字)
217 2
|
XML 搜索推荐 定位技术
建站SEO优化之站点地图sitemap
很早以前一直觉得站点地图可有可无,反正搜索引擎爬虫都会自己去爬站内各种连接。但是对于一个新站或经常更新的站点来说,站点地图很重要性,是快速告诉搜索引擎站内有哪些内容或更新了哪些内容。并且还能针对不同以页面配置优先级等。
702 0
建站SEO优化之站点地图sitemap
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的QPSK+帧同步系统开发与硬件片内测试,包含高斯信道,误码统计,可设置SNR
本文基于FPGA实现QPSK+帧同步系统硬件测试,包含ILA在线数据采集、VIO在线SNR设置及数据源模块。通过设置不同SNR(如6dB和15dB),验证系统性能。理论部分介绍QPSK调制解调原理,将二进制数据映射为四相状态,提高传输速率与频谱效率;帧同步用于确定帧起始位置,确保正确解调。Verilog代码实现信号生成、SNR设置、QPSK调制解调及误码统计等功能,附带ILA测试结果分析。
267 32
|
存储 Unix Linux
一级目录的解释(存储什么东西,英文)
1、bin binary(二进制)的缩写; 含义:此文件下存放的都是二进制可以执行命令文件。
295 0
|
新零售 vr&ar
AR和VR的风口里,维度视界是怎么突围的?
维度视界通过掌握的AR软硬件核心技术,快速推动技术应用落地,拓展AR、VR与人工智能技术在安防、新零售、教育培训等领域的应用。希望利用VR、AR技术改变人们的工作生活,让未来更美好。
AR和VR的风口里,维度视界是怎么突围的?