zoukankan      html  css  js  c++  java
  • 天梯赛L1043 阅览室 模拟题

    链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805087447138304

     

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

     

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

     

    输入格式:

     

    输入在第一行给出一个正整数n

     

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

     

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

     

    输出格式:

     

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

     

    输入样例:

    3
    1 S 08:10
    2 S 08:35
    1 E 10:00
    2 E 13:16
    0 S 17:00
    0 S 17:00
    3 E 08:10
    1 S 08:20
    2 S 09:00
    1 E 09:20
    0 E 17:00
    
     

    输出样例:

    2 196
    0 0
    1 60
    注意每一次要重置借书记录,直接写一个函数转换时间,不用对string一个一个的进行操作,一借一还之后还可以重复的借书
    代码:
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<map>
     4 #include<cmath>
     5 #include<cstring>
     6 using namespace std;
     7 const int maxn=1e3+5;
     8 int flag[maxn];//记录书借出的时间
     9 
    10 int check(string s)//将时间转换为分钟数
    11 {
    12     int h=(s[0]-'0')*10+s[1]-'0';
    13     int m=(s[3]-'0')*10+s[4]-'0';
    14     int time=h*60+m;
    15     return time;
    16 }
    17 
    18 //重置借书记录
    19 void reset(int book[])
    20 {
    21     for(int i=0; i<maxn; i++)
    22         book[i]=-1;
    23     return;
    24 }
    25 
    26 int main()
    27 {
    28     int day,id;//记录天数和书的编号
    29     char ch;
    30     string s;
    31     cin>>day;
    32     cin>>id>>ch>>s;
    33     int t=0,n=0;//t,借书次数,n,总阅读时间
    34     reset(flag);//大方向重置 
    35     while(1)
    36     {
    37         if(id==0)
    38         {
    39             reset(flag);//每天结束后都要重置借书记录
    40             double ans;//平均阅读时间
    41             if(t) ans=round(n*1.0/t);
    42             else ans=0;
    43             cout<<t<<" "<<ans<<endl;//次数和平均时间 
    44             day--;
    45             t=0;
    46             n=0;
    47         }
    48         
    49         else if(ch=='S') flag[id]=check(s);//如果是借书,直接记录该书借出的时间
    50        
    51         else if(ch=='E' && flag[id]!=-1)
    52         { //如果是还书,那必须是之前借出的,否则视为无效还书记录不做处理
    53             t++;//记录借书的次数 
    54             n+=check(s)-flag[id];
    55             flag[id]=-1;//重置书的编号 
    56         }
    57         if(day==0) return 0;
    58         cin>>id>>ch>>s;//这里没用数组进行输入 
    59     }
    60     return 0;
    61 }

     

     
  • 相关阅读:
    js 数组的length(javascript教程四)
    js利用数组length属性清空和截短数组
    mysql一对多关联查询的时候筛选条件
    PHP错误处理及异常处理笔记
    Javascript获取URL地址变量参数值的方法
    php 提示Warning: mysql_fetch_array() expects
    Centos中安装PHP的PDO MySQL扩展的教程
    ASP.NET缓存 Cache之数据缓存
    Spring.Net框架一:Spring.Net简介
    T4模板
  • 原文地址:https://www.cnblogs.com/sweetlittlebaby/p/12442901.html
Copyright © 2011-2022 走看看