PAT 天梯赛 L1-043. 阅览室 【STL】

mac2022-06-30  27

题目链接

https://www.patest.cn/contests/gplt/L1-043

思路 将每一次 借出和归还 都用 MAP 标记 如果归还的时候 已经被标记过了 那么 ANS ++ 并且 TIME 也加上相应时间

最后 算一下平均时间 要四舍五入

AC代码

#include <iostream> #include <cstdio> #include <algorithm> #include <cmath> #include <deque> #include <vector> #include <queue> #include <string> #include <cstring> #include <map> #include <stack> #include <set> #include <cstdlib> #include <ctype.h> #include <numeric> #include <sstream> using namespace std; typedef long long LL; const double PI = 3.14159265358979323846264338327; const double E = 2.718281828459; const double eps = 1e-6; const int MAXN = 0x3f3f3f3f; const int MINN = 0xc0c0c0c0; const int maxn = 1e5 + 5; const int MOD = 1e9 + 7; struct node { int time; int flag; }; int main() { int t; cin >> t; a: while (t--) { map <string, node> m; m.clear(); string ID; char vis; int h, mins; int ans = 0; int time = 0; while (cin >> ID) { scanf(" %c d:d", &vis, &h, &mins); if (ID == "0") { if (ans > 0) time = (int)(time*1.0/ans + 0.5); printf("%d %d\n", ans, time); goto a; } else { if (vis == 'S') { m[ID].time = h * 60 + mins; m[ID].flag = 1; } else if (vis == 'E') { if (m[ID].flag == 1) { ans ++; time += (h * 60 + mins) - m[ID].time; m.erase(ID); } } } } } }

转载于:https://www.cnblogs.com/Dup4/p/9433284.html

相关资源:操作系统中_阅览室_问题的JAVA实现
最新回复(0)