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. SAP RETAIL初阶之门店的营业时间
  2. 08day 数据泵(expdb/impdb)—数据导出
  3. python小工具myqr生成动态二维码
  4. Consensus Mechanisms — As Detailed and Concise as possible!
  5. Linux 命令之 groupdel -- 删除指定的用户组
  6. 信息学奥赛C++语言:重组
  7. ModelMap和ModelAndView的作用
  8. 光学定位与追踪技术_从显微镜到显纳镜:小于2nm定位精度光学显微镜
  9. Guava base -- Joiner
  10. 中介效应调节效应分析对比及操作详解
  11. 零基础21天搞定Python分布式爬虫_分布式网络爬虫入门进阶视频教程
  12. 现货白银最低门槛是啥?
  13. 30岁以前不要去在乎的29件事
  14. [POI2006] OKR-Periods of Words题解
  15. OSG 单体化如何生成
  16. WinEdt教程 表格,图像,公式,段落
  17. vue+elementUi在点js.js文件中使用Message消息提示、Notification、MessageBox、succes、import、from
  18. 做计算机的小卫士教案,小学信息技术教案四年级上环保小卫士
  19. 建网站常用HTML代码
  20. javascript设计模式(javascript设计模式与开发实践读书笔记)

热门文章

  1. oracle 单机改rac,把oracle rac 转化作单机数据库
  2. 基于OSM路网的LCZ分类单元划分
  3. css text 大小统一样式,css-iPhone上的字体大小呈现不一致
  4. 元宇宙房地产:又一个疯狂的加密市场吗?
  5. 串口数据抓取及串口通信模拟
  6. 没有密码,怎么打开Excel?
  7. Log4j2核弹级漏洞线上修复方案!
  8. ensp实操--使用模拟器配置无线网络
  9. 突发事件应急救援无线通信解决方案
  10. js计算贷款金额怎么算