天梯图书阅览室请你编写一个简单的图书借阅统计程序。当读者借书时,管理员输入书号并按下S键,程序开始计时;当读者还书时,管理员输入书号并按下E键,程序结束计时。书号为不超过1000的正整数。当管理员将0作为书号输入时,表示一天工作结束,你的程序应输出当天的读者借书次数和平均阅读时间。
注意:由于线路偶尔会有故障,可能出现不完整的纪录,即只有S没有E,或者只有E没有S的纪录,系统应能自动忽略这种无效纪录。另外,题目保证书号是书的唯一标识,同一本书在任何时间区间内只可能被一位读者借阅。
输入在第一行给出一个正整数N(≤10),随后给出N天的纪录。每天的纪录由若干次借阅操作组成,每次操作占一行,格式为:
书号([1, 1000]内的整数) 键值(S或E) 发生时间(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
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
- #include
- #include
- #include
- #include
- #define endl '\n'
- using namespace std;
- int a[1005];
- int main()
- {
- int n,cnt=0,sum=0,ans=0,k,h,m;
- char ch;
- memset(a,-1,sizeof(a));
- scanf("%d",&n);
- while(cnt
- {
- scanf("%d %c %d:%d",&k,&ch,&h,&m);
- if (k == 0)
- {
- cnt++;
- if (ans == 0) cout<
" "< - else cout<
" "<<round(sum/double(ans))< - ans = 0;
- sum = 0;
- memset(a,-1,sizeof(a));
- continue;
- }
- if (a[k] != -1 && ch == 'E')
- {
- ans++;
- sum = sum + (h*60+m - a[k]);
- a[k] = -1;
- }
- else
- {
- if (ch == 'S') a[k] = h*60+m;
- }
- }
- return 0;
- }
本题个人反思:
没有考虑到可能会从00:00开始,这样会导致a[k]=0;也就进不去计算的if导致出错。
下次做题时应看清答案的值域范围,[0,23*60+59],那么初始化就应该避免与0发生冲突!
-
相关阅读:
228 基于matlab的神经网络人脸识别
[补题记录] Atcoder Beginner Contest 294(E)
【开关稳压器】LMR16030SDDA、LMR38010FDDAR,汽车类LMR43610MSC5RPERQ1低 EMI 同步降压稳压器
C++ 之 perf+火焰图分析与Debug
前端开发如何做新手引导
前端发送axios请求报错Request failed with status code 500解决方案
几何建模Brep边界表达法
【C++】并查集
磐舟CI使用说明及案例
【听课笔记】复旦大学遗传学_09基因与演化
-
原文地址:https://blog.csdn.net/2402_82472978/article/details/136423459
-
最新文章
-
沪漂五周年了:我越来越迷茫了
Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
MySQL-Seconds_behind_master的精度误差
[MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
Agent OS :五种驯服不确定性的范式
PortSwigger SQL注入LAB11
数据库即时编译JIT
[Begin]AI Learn Data Day 0
深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU