【GPLT 二阶题目集】L2-034 口罩发放

news2025/1/10 2:45:31

为了抗击来势汹汹的 COVID19 新型冠状病毒,全国各地均启动了各项措施控制疫情发展,其中一个重要的环节是口罩的发放。

某市出于给市民发放口罩的需要,推出了一款小程序让市民填写信息,方便工作的开展。小程序收集了各种信息,包括市民的姓名、身份证、身体情况、提交时间等,但因为数据量太大,需要根据一定规则进行筛选和处理,请你编写程序,按照给定规则输出口罩的寄送名单。

输入格式:

--->给定数据约束如下:

        姓名 是一个长度不超过 10 的不包含空格的非空字符串;
        身份证号 是一个长度不超过 20 的非空字符串;
        身体情况 是 0 或者 1,0 表示自觉良好,1 表示有相关症状;
        提交时间 是 hh:mm,为24小时时间(由 00:00 到 23:59。例如 09:08。)。注意,给定的记录的提交时间不一定有序;
        身份证号 各不相同,同一个身份证号被认为是同一个人,数据保证同一个身份证号姓名是相同的。

--->能发放口罩的记录要求如下:

        身份证号 必须是 18 位的数字(可以包含前导0);
        同一个身份证号若在第 i 天申请成功,则接下来的 P 天不能再次申请。也就是说,若第 i 天申请成功,则等到第 i+P+1 天才能再次申请;
        在上面两条都符合的情况下,按照提交时间的先后顺序发放,直至全部记录处理完毕或 Si 个名额用完。如果提交时间相同,则按照在列表中出现的先后顺序决定。

输出格式:

对于每一天的申请记录,每行输出一位得到口罩的人的姓名及身份证号,用一个空格隔开。顺序按照发放顺序确定。

在输出完发放记录后,你还需要输出有合法记录的、身体状况为 1 的申请人的姓名及身份证号,用空格隔开。顺序按照申请记录中出现的顺序确定,同一个人只需要输出一次。

输入样例:

4 2
5 3
A 123456789012345670 1 13:58
B 123456789012345671 0 13:58
C 12345678901234567 0 13:22
D 123456789012345672 0 03:24
C 123456789012345673 0 13:59
4 3
A 123456789012345670 1 13:58
E 123456789012345674 0 13:59
C 123456789012345673 0 13:59
F F 0 14:00
1 3
E 123456789012345674 1 13:58
1 1
A 123456789012345670 0 14:11

输出样例:

D 123456789012345672
A 123456789012345670
B 123456789012345671
E 123456789012345674
C 123456789012345673
A 123456789012345670
A 123456789012345670
E 123456789012345674

样例解释:
输出中,第一行到第三行是第一天的部分;第四、五行是第二天的部分;第三天没有符合要求的市民;第六行是第四天的部分。最后两行按照出现顺序输出了可能存在身体不适的人员。

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
int p;

class Person
{
public:
    string name;//姓名
    string id;//身份证号
    bool health;//身体情况
    string time;//提交时间
    int num;//列表出现顺序
};

bool cmp(Person& a, Person& b)
{
    if (a.time != b.time) return a.time < b.time;
    return a.num < b.num;
}

bool idisOK(Person& temp)
{
    if (temp.id.size() != 18)
        return false;
    for (int x = 0; x < 18; x++) {
        if (temp.id[x] < '0' || temp.id[x]>'9')
            return false;
    }
    return true;
}

int main()
{
    int d, t, s;
    cin >> d >> p;
    vector<Person> all; //所有合法且有相关症状的记录(身份证号可重复)
    map<string, int> get_allowed; //下一次可以领取口罩的最早日
    map<string, bool> health_output; //是否作为身体不适人员输出
    Person temp;

    for (int i = 1; i <= d; i++) { //第i天
        cin >> t >> s;
        vector<Person> personOK; //本日符合要求的记录
        for (int j = 1; j <= t; j++) { //第j条记录
            //获取本条记录
            temp.num = j; cin >> temp.name >> temp.id >> temp.health >> temp.time;
            //判断该记录身份证号是否合法
            if (idisOK(temp)) {
                get_allowed.insert(make_pair(temp.id, 1));
                health_output.insert(make_pair(temp.id, false));
                //记录是否有相关症状
                if (temp.health == 1)
                    all.push_back(temp);
                //记录是否符合领取口罩要求
                if (i >= get_allowed[temp.id])
                    personOK.push_back(temp);
            }
        }
        sort(personOK.begin(), personOK.end(), cmp); //对本日符合要求的记录排序
        vector<string> get; //本日已领口罩id
        for (int k = 0; k < personOK.size() && s>0; k++) { //口罩有限,输出前min个符合要求的记录
            if (find(get.begin(), get.end(), personOK[k].id) == get.end()) {
                cout << personOK[k].name << " " << personOK[k].id << endl;
                get_allowed[personOK[k].id] = i + p + 1;
                get.push_back(personOK[k].id); s--;
            }
        }
    }
    for (int i = 0; i < all.size(); i++) { //输出可能身体不适人员
        if (health_output[all[i].id] == 0) {
            cout << all[i].name << " " << all[i].id << endl;
            health_output[all[i].id] = 1;
        }
    }
    return 0;
}

 注意事项:

如有问题,欢迎提出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/189650.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

redis的配置文件

目录 介绍 1. 单位的设置方式 2. 可以包含其他文件内容 3. 网络配置相关 4. 通用 5. 安全 6. 限制 redis的配置文件名为redis.conf&#xff0c;一般会安装在/etc目录下。 如果找不到该文件可以使用find命令查找。 find . -name redis.conf 介绍 1. 单位的设置方式 只支持字…

client-go监听apiserver,监听http2逻辑分析

前言 最近做项目&#xff0c;需要写一个controller&#xff08;k8s的插件&#xff09;&#xff0c;需要从k8s的apiserver取数据&#xff0c;就用了自带的client-go&#xff0c;但是client-go是怎么从apiserver获取数据的一直没有研究过&#xff0c;只是看网上&#xff0c;看官…

Hudi系列10:Flink流式插入

文章目录流式插入概述一. Hudi流式插入案例1(datagen)1.1 准备工作1.2 源端准备1.3 目标端表准备1.4 ETL准备1.5 数据验证1.6 通过SPARK SQL查看数据二. Hudi流式插入案例2(Kafka)2.1 准备工作2.2 源端准备2.2.1 创建kafka的topic (hudi_flink)2.2.2 Flink SQL Client消费kafka…

卷积神经网络中的权值共享和局部连接

卷积神经网络中的权值共享和局部连接卷积神经网络的两大特点权值共享全连接卷积神经网络的两大特点 权值共享&#xff0c;就是输入一张图&#xff0c;用一个filter去扫这张图&#xff0c;filter里面的数就叫权重&#xff0c;这张图每个位置都是被同样的filter扫的&#xff0c;…

Flink官方例子解析:WordCount

1. 简介 今天介绍的是官方子项目flink-examples-streaming里面的WordCount例子。 WordCount &#xff0c;中文&#xff1a;单词统计&#xff0c;是大数据计算常用的例子。 2. WordCount需要实现的功能 监听指定目录下的文件&#xff0c;读取文件的文本内容&#xff1b;如果未…

Python继承机制及其使用

Python 类的封装、继承、多态 3 大特性&#xff0c;前面章节已经详细介绍了 Python 类的封装&#xff0c;本节继续讲解 Python 类的继承机制。继承机制经常用于创建和现有类功能类似的新类&#xff0c;又或是新类只需要在现有类基础上添加一些成员&#xff08;属性和方法&#…

RASP技术进阶系列(三):重大漏洞自动化热修复

在上篇文章《RASP技术进阶系列&#xff08;二&#xff09;&#xff1a;东西向Web流量智能检测防御》中提到&#xff0c;在企业日常安全运营以及HW场景下&#xff0c;应用漏洞攻击应急响应和恶意流量溯源分析是安全团队的重点工作。在恶意流量溯源方面&#xff0c;指向攻击来源的…

趁着你对象吃泡面的功夫,我修复了误删除的文件

文章目录前言一. linux下文件删除原理1.1 文件删除原理的简单介绍1.2 测试inode号是否容易被覆盖&#xff1f;二. 实验测试过程2.1 实验环境&#xff1a;2.2 新增一块硬盘测试2.3 对磁盘分区2.3.1 分区&#xff08;使用fdisk分区&#xff09;2.3.2 格式化&#xff0c;创建目录挂…

网络化多智能体系统的共识与合作

在所有参与者之间提供快速协议和团队合作的算法通过自组织网络系统实现有效的任务执行。By Reza Olfati-Saber, Member IEEE, J. Alex Fax, and Richard M. Murray, Fellow IEEE小于 翻译摘要&#xff1a;本文提供了一个理论框架&#xff0c;用于分析多智能体网络系统的共识算法…

Linux文件与目录的查看:ls

前言 ls作为我们在Linux系统中最常用的命令&#xff0c;因为我们常常需要去知道文件或是目录的相关信息&#xff0c;但我们Linux的文件所记录的信息实在是太多了&#xff0c;ls也没有需要全部都列出来&#xff0c;所以&#xff0c;当我们执行ls命令时&#xff0c;默认显示的只…

【数据结构】基础:二叉搜索树

【数据结构】基础&#xff1a;二叉搜索树 摘要&#xff1a;本文为二叉树的进阶&#xff0c;主要介绍其概念与基本实现&#xff08;递归与非递归&#xff09;&#xff0c;再介绍其应用&#xff0c;主要介绍内容为KV模型。最后为简单的性能分析。 文章目录【数据结构】基础&#…

【数据结构】1.1 数据结构的研究内容

文章目录数据结构的研究内容数据结构研究的内容小结数据结构的研究内容 早期&#xff0c;计算机主要用于数值计算: 首先&#xff0c;分析问题、提取操作对象&#xff0c;然后&#xff0c;找出操作对象之间的关系&#xff0c;用数学语言加以描述&#xff0c;建立相应数学方程。…

Java日志门面技术 SLF4J

文章目录背景SLF4J概述切换日志框架实际应用配合自身简单日志实现(slf4j-simple)配置logback日志实现配置Log4J日志实现(需适配器)配置JUL日志实现(需适配器)添加slf4j-nop依赖(日志开关)桥接旧的日志实现框架背景 随着系统开发的进行&#xff0c;可能会更新不同的日志框架&am…

TF数据流图图与TensorBoard

2.1 TF数据流图 学习目标 目标 说明TensorFlow的数据流图结构应用 无内容预览 2.1.1 案例&#xff1a;TensorFlow实现一个加法运算 1 代码2 TensorFlow结构分析2.1.2 数据流图介绍 2.1.1 案例&#xff1a;TensorFlow实现一个加法运算 2.1.1.1 代码 def tensorflow_demo():&…

CMMI对企业有什么价值,如何高效落地?

1、获得权威认证 CMMI是全球性软件与系统工程行业的唯一权威认证&#xff0c;是对企业软件研发与能力服务的认可。 CMMI企业价值 CoCode项目管理全面支持CMMI3-5级高效落地​ 2、降本增效&#xff0c;提高企业能力。 CMMI对软件开发过程进行规范化梳理&#xff0c;保证软…

虚拟机ubuntu系统内存满,无法进入桌面,扩展内存

1、 关闭虚拟机&#xff0c;在虚拟机设置中将原先20GB扩展到30GB 注意&#xff1a;有快照需要删除快照后才能扩展 2、命令行进入ubuntu 内存满了&#xff0c;无法进入Ubuntu图形界面 按下ctrlaltf2~f6组合键 输入用户名和密码进入命令行模式 3、删除一些东西 删除回收站…

vuex的modules和辅助函数

一、回顾&#xff1a;vuex状态管理器1、版本问题&#xff1a;vue2对应的是vuex3&#xff1b;vue3对应的vuex42、vuex作用&#xff1a;每个vuex中都有一个Store(仓库)&#xff0c;用于管理vue项目中用到的状态变量&#xff08;属性&#xff09;。vuex维护的是一个单一的状态树vu…

工作常用cron总结

一、cron表达式详解 corn从左到右&#xff08;用空格隔开&#xff09;&#xff1a; 秒 分 小时 日 月 周 (星期中的日期&#xff0c;1代表周日&#xff0c;7代表周六) 年 定时任务统计 数据同步 0 0 10 * * &#xff1f; 每天上午10点触发…

Spring 整合Mybatis。

目录 一、环境准备 1、Mybatis 环境 2、整合思路分析 二、Spring整合Mybatis 三、Spring整合Junit 一、环境准备 1、Mybatis 环境 ▶ 步骤1 : 准备数据库表 Mybatis是来操作数据库表&#xff0c;所以先创建一个数据库及表 create database spring_db character set utf8; …

LeetCode刷题系列 -- 1008. 前序遍历构造二叉搜索树

给定一个整数数组&#xff0c;它表示BST(即 二叉搜索树 )的 先序遍历 &#xff0c;构造树并返回其根。保证 对于给定的测试用例&#xff0c;总是有可能找到具有给定需求的二叉搜索树。二叉搜索树 是一棵二叉树&#xff0c;其中每个节点&#xff0c; Node.left 的任何后代的值 严…