L1-043 阅览室 (20 分)

简介: L1-043 阅览室 (20 分)

天梯图书阅览室请你编写一个简单的图书借阅统计程序。当读者借书时,管理员输入书号并按下S键,程序开始计时;当读者还书时,管理员输入书号并按下E键,程序结束计时。书号为不超过1000的正整数。当管理员将0作为书号输入时,表示一天工作结束,你的程序应输出当天的读者借书次数和平均阅读时间。


注意:由于线路偶尔会有故障,可能出现不完整的纪录,即只有S没有E,或者只有E没有S的纪录,系统应能自动忽略这种无效纪录。另外,题目保证书号是书的唯一标识,同一本书在任何时间区间内只可能被一位读者借阅。


输入格式:

输入在第一行给出一个正整数N(≤10),随后给出N天的纪录。每天的纪录由若干次借阅操作组成,每次操作占一行,格式为:


书号([1, 1000]内的整数) 键值(S或E) 发生时间(hh:mm,其中hh是[0,23]内的整数,mm是[0, 59]内整数)


每一天的纪录保证按时间递增的顺序给出。


输出格式:

对每天的纪录,在一行中输出当天的读者借书次数和平均阅读时间(以分钟为单位的精确到个位的整数时间)。


输入样例:

1. 3
2. 1 S 08:10
3. 2 S 08:35
4. 1 E 10:00
5. 2 E 13:16
6. 0 S 17:00
7. 0 S 17:00
8. 3 E 08:10
9. 1 S 08:20
10. 2 S 09:00
11. 1 E 09:20
12. 0 E 17:00

结尾无空行


输出样例:

1. 2 196
2. 0 0
3. 1 60


#include<iostream>
#include<map>
#include<cstring>
using namespace std;
int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        int id,h,m,sum=0,ans=0;
        char op,ch;
        map<int,int>mp1,mp2;//mp1存借书时间,mp2标记,可以换成数组
        while(cin>>id>>op>>h>>ch>>m)
        {
            if(id==0)
            {
                if(ans==0) cout<<"0 0\n";//0不能做分母,所以拿出来单独判断
                else printf("%d %.0lf\n",ans,sum*1.0/ans);
                break;
            }
            else if(op=='S')
            {
                mp1[id]=h*60+m;//借书时间
                mp2[id]=1;//标记
            }
            else if(op=='E'&&mp2[id]==1)
            {
                ans++;
                mp2[id]=0;//不能借同一本书两次
                sum+=(h*60+m)-mp1[id];
            }
        }
    }
    return 0;
}


目录
相关文章
【天梯赛】L1-095 分寝室
输出的方案对应女生都是 24/4=6 人间、男生都是 60/6=10 人间,人数差为 4。满足前三项要求的分配方案还有两种,即女生 6 间(都是 4 人间)、男生 4 间(都是 15 人间);同时,每间女寝人数必须都一样,每间男寝人数必须都一样,也就是女生总人数对女寝数取模为0,男生总人数对男寝数取模为0。输入在一行中给出 3 个正整数 n0​、n1​、n,分别对应女生人数、男生人数、寝室数。按题意模拟,因为知道总寝室数为n,所以可以从1~n-1暴力枚举女寝 i 的数量,那么男寝的数量则为 c-i。
387 6
|
机器人 计算机视觉
检测一切YOLO-World的几个实用使用技巧,助力精准高效目标检测任务!
检测一切YOLO-World的几个实用使用技巧,助力精准高效目标检测任务!
|
数据采集 分布式计算 并行计算
Dask与Pandas:无缝迁移至分布式数据框架
【8月更文第29天】Pandas 是 Python 社区中最受欢迎的数据分析库之一,它提供了高效且易于使用的数据结构,如 DataFrame 和 Series,以及大量的数据分析功能。然而,随着数据集规模的增大,单机上的 Pandas 开始显现出性能瓶颈。这时,Dask 就成为了一个很好的解决方案,它能够利用多核 CPU 和多台机器进行分布式计算,从而有效地处理大规模数据集。
802 1
|
前端开发 rax Shell
Shellcode Injection(√)
Shellcode Injection(√)
377 0
|
消息中间件 SQL JSON
flink kafka connector源码解读(超详细)
flink kafka connector源码解读(超详细)
919 0
|
安全 测试技术 Linux
转: pam 禁止某些用户使用ssh 远程登录
vim /etc/pam.d/sshd         在第一行加入 auth       required     pam_listfile.
2372 0
|
SQL 自然语言处理 关系型数据库
MySQL中的分析器(Analyzer)
MySQL中的分析器(Analyzer)
|
SQL XML JavaScript
MyBatis-Plus 联表查询的短板,终于有一款工具补齐了
MyBatis-Plus 联表查询的短板,终于有一款工具补齐了
|
NoSQL 安全 Linux
《Linux从练气到飞升》No.24 Linux中的信号(一)
《Linux从练气到飞升》No.24 Linux中的信号(一)
243 0
|
算法 调度 C++
高响应比优先调度算法和短作业优先调度算法
高响应比优先调度算法和短作业优先调度算法
730 0
高响应比优先调度算法和短作业优先调度算法