PAT (Advanced Level) Practice - 1016 Phone Bills(25 分)
发布日期:2021-06-30 23:43:21 浏览次数:4 分类:技术文章

本文共 910 字,大约阅读时间需要 3 分钟。

题目链接:

 

题目大意:略。

 

解题思路:

  1. 筛选合格数据:将给出的数据先按照姓名排序,再按照时间的先后顺序排列,这样遍历的时候,前后两个名字相同且前面的状态为on-line后面一个的状态为off-line的就是合格数据。
  2. 计算费用:一律用差分来做,中间的跨天来用 cst[24] * day * 60 来统计。

 

AC 代码

#include
#include
#define mem(a,b) memset(a,b,sizeof a)#define ssclr(ss) ss.clear(), ss.str("")#define INF 0x3f3f3f3f#define MOD 1000000007using namespace std;typedef long long ll;struct node{ string name; int sta,time,MM,dd,hh,mm;};int cst[25];vector
data(1009);int cmp(node n1,node n2){ return n1.name!=n2.name ? n1.name
>data[i].name; scanf("%d:%d:%d:%d%s",&data[i].MM,&data[i].dd,&data[i].hh,&data[i].mm,op); data[i].sta=op[1]=='n'?1:0; data[i].time=data[i].dd*24*60+data[i].hh*60+data[i].mm; } sort(data.begin(),data.begin()+n,cmp); map
> mp; for(int i=1;i
nd=it.second; printf("%s %02d\n",it.first.c_str(),nd[0].MM); double sum=0, ans; for(int i=1;i

 

转载地址:https://lux-sun.blog.csdn.net/article/details/82145081 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:PAT (Advanced Level) Practice - 1091 Acute Stroke(30 分)
下一篇:PAT (Advanced Level) Practice - 1087 All Roads Lead to Rome(30 分)

发表评论

最新留言

很好
[***.229.124.182]2024年04月19日 17时54分32秒