2020团队程序设计天梯赛

赛后听许多人感慨,火锅火锅吃不掉,彩票彩票刮不开,调和平均也调不和,而像我这种口罩发不下去的人也在大多数吧

L2-2 口罩发放 (25分)

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

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

输入格式:

输入第一行是两个正整数 DP(1≤D,P≤30),表示有 D 天的数据,市民两次获得口罩的时间至少需要间隔 P 天。

接下来 D 块数据,每块给出一天的申请信息。第 i 块数据(i=1,⋯,D)的第一行是两个整数 TiSi(1≤Ti,Si≤1000),表示在第 i 天有 Ti 条申请,总共有 Si 个口罩发放名额。随后 Ti 行,每行给出一条申请信息,格式如下:

姓名 身份证号 身体情况 提交时间

给定数据约束如下:

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

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

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

输出格式:

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

在输出完发放记录后,你还需要输出有合法记录的、身体状况为 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

样例解释:

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

AC代码:

#include <bits/stdc++.h>using namespace std;struct ii
{string name, id;int sex;int t1, t2; //时间,出现顺序
};int cmp(ii a, ii b)
{return tie(a.t1, a.t2) < tie(b.t1, b.t2); //按照提交时间和出现顺序排序
}int check(string s)
{if (s.size() != 18)return 0;for (int i = 0; i < 18; i++)if (!isdigit(s[i]))return 0;return 1;
}int main()
{vector<ii> ans, ans1; //ans:发放口罩的名单,ans1:身体状况为1的名单map<string, int> mp;  //mp:相隔天数set<string> tx;        //tx:被统计过的int d, p;cin >> d >> p;for (int i = 1; i <= d; i++){int t, c;cin >> t >> c;vector<ii> n;for (int k = 1; k <= t; k++){string name, id;int sex, mm, hh;char ch; //吃一下‘:’cin >> name >> id >> sex >> hh >> ch >> mm;if (check(id)){n.push_back({name, id, sex, hh * 60 + mm, i * 10000 + k});if (sex == 1 && tx.count(id) == 0){ans1.push_back({name, id, sex, hh * 60 + mm, i * 10000 + k});tx.insert(id);}}}if (n.size() == 0 || c == 0)continue;sort(n.begin(), n.end(), cmp);for (int j = 0; j < n.size() && c; j++){if (mp.count(n[j].id) == 0 || mp[n[j].id] + p + 1 <= i){mp[n[j].id] = i;c--;ans.push_back(n[j]);}}}for (int i = 0; i < ans.size(); i++){cout << ans[i].name << " " << ans[i].id << endl;}for (int i = 0; i < ans1.size(); i++){cout << ans1[i].name << " " << ans1[i].id << endl;}return 0;
}

2020团队程序设计天梯赛 L2-2 口罩发放 (25分)相关推荐

  1. 团队程序设计天梯赛考点内容总结(15分以上题)

    L1: L1-002 打印沙漏 (20 分) 字符模拟 L1-003 个位数统计 (15 分) 字符模拟 L1-005 考试座位号 (15 分) 模拟 L1-006 连续因子 (20 分) 数学因数分 ...

  2. 【2020团体程序设计天梯赛】L2部分(PTA,L2-033到L2-036)题解代码复盘

    概况(复盘) 打完最后的分数是170,三等还差5分 除了模板25分是我的锅之外(明明考前还看了的),, 还有L1最后一题列标号567没减3扣了2分,L2第二题身份证号码是数字扣了4分. 以及改了一个多 ...

  3. 团体程序设计天梯赛-L2组

    团体程序设计天梯赛-L2组 -------------------------------------------------------------------------------- 题目传送门 ...

  4. 2020团体程序设计天梯赛题解(部分)

    文章目录 个人题解:这里我只写我个人认为应该写的题解,太简单的就不写了 L2-2 口罩发放 (25分) 思路:正解 L2-3 完全二叉树的层序遍历 (25分) 思路:正解 L2-4 网红点打卡攻略 ( ...

  5. PTA程序设计天梯赛 L2题解报告(40/40)

    目录 L2-001 紧急救援 (25 分) L2-002 链表去重 (25 分) L2-003 月饼 (25 分) L2-004 这是二叉搜索树吗? L2-005 集合相似度 (25 分) L2-00 ...

  6. 程序设计天梯赛java版——T1(10分)

    程序设计天梯赛--java版 文章目录 程序设计天梯赛--java版 7-念数字 输入格式: 输出格式: 输入样例: 输出样例: 8-给整数段求和 输入格式: 输出格式: 输入样例: 输出样例: 13 ...

  7. 团体程序设计天梯赛 L2 题目合集

    前言 发现自己还能再参加一次天梯赛,在高兴之余,决定把在赛前将所有的天梯赛真题过一遍,希望自己可以取得理想的成绩.目前 L1 的题目已经刷完,打算在赛前刷完 L2 的题目. 本来想 L2 的题目都写个 ...

  8. 第六届团队程序设计天梯赛 全题目解析讲解

    B站已经录好视频合集:--------------------传送门--------------------- 题目是2021年4月天梯赛决赛原题: 题号 题目名称 L1-1 人与神 L1-2 两小时 ...

  9. GLPT团队程序设计天梯赛 2023正式赛

    2023.4.22 13:30-16:30 162分 团队1556分 L1-1 最好的文档 5 15990/21484(74.43%) 在一行中输出 Good code is its own best ...

最新文章

  1. python类的继承--------类的基础(四)
  2. jtable如何从表格中定位_Java Swing组件编程之JTable表格用法实例详解
  3. java 1e6,java-GeoPoint getLatitudeE6()返回-80000000,但getLong...
  4. boost::callable_traits的is_lvalue_reference_member的测试程序
  5. python list元素合并_python list 合并连接字符串的方法
  6. 1.1 算法编译与调试
  7. linux性能架构,Linux性能及调优指南(翻译)之Linux内存架构
  8. ffmpeg 源代码简单分析 : avcodec_decode_video2()
  9. 计算机等级考试一级宝典,计算机等级考试一级通关宝典.doc
  10. 冲压模板自动标注LISP_自动标注.LSP
  11. 使用wordPress搭建个人博客
  12. DEDECMS三级导航动态调用
  13. 阿里NASA计划“亮剑”:谢崇进和他追求的科学极限
  14. 【英语语法入门】 第29讲 情态动词的否定和疑问
  15. 英语流利说 第13天
  16. 4个有助于保护网站免受劫持的方法
  17. JN5168的SPI使用
  18. hihocoder #1163 : 博弈游戏·Nim游戏
  19. 通信电子电路(二十三)习题讲解 第五章
  20. 使用函数sample进行抽样

热门文章

  1. (原创)SurfaceView介绍和使用
  2. JMC3608兼容代替SX1308,SDB628,LP6238,HX3608,MT3608,B628,TC3608,LN3608
  3. 控制台输入菱形的高度
  4. 人脸识别有什么漏洞,怎么防伪?
  5. fieldset在form中的用法
  6. Segmented Log 分段日志
  7. TCP端口数65535的限制
  8. 黄金分割点c的坐标c语言,黄金分割点(第五周 c语言版)
  9. LeetCode 63
  10. nordic 52832添加HID服务实现手机蓝牙自拍杆功能 附遇到的问题和解决方法