PAT甲级1016 Phone Bills

PAT甲级 1016 Phone Bills A long-distance telephone company charges its customers by the following rules:Making a long-distance call costs a certain amount per minute, depending on the time of day when the call is made. When a customer starts connecting a long-distance call, the ti 阅读详情

1016 Phone Bills

题目大意:第一行给出每个时间段每分钟打电话的费用(美分,最后需要输出美元),接下来给出n组数据分别列出通话的人,时间,是打还是挂

注意:
不是所有记录都合法,打和挂数量不对应一定有错的。这里我是先按照人名,后按照时间顺序从小到大排列,若是碰到重复的打电话则取最后一次打的时间;若是碰到重复的挂电话则取第一次挂电话的时间

由于我之前用cppAC了一次于是这次用的是python,写的比较乱:

def calTimeBill(start,end):	#计算时间和费用
    global rate
    l_start=list(map(int,start.split(':')[1:]))
    s=(l_start[0]-1)*24*60+l_start[1]*60+l_start[2]
    total=sum(rate)*60
    bs=(l_start[0]-1)*total
    for i in range(l_start[1]):
        bs+=60*rate[i]
    bs+=rate[l_start[1]]*l_start[2]
    l_end=list(map(int,end.split(':')[1:]))
    e=(l_end[0]-1)*24*60+l_end[1]*60+l_end[2]
    be=(l_end[0]-1)*total
    for i in range(l_end[1]):
        be+=60*rate[i]
    be+=rate[l_end[1]]*l_end[2]
    return (e-s,(be-bs)/100)

def cmp(s):	#比较函数
    name=s[0][0]
    l=list(map(int,s[1][0].split(':')))
    return (name,l[0],l[1],l[2],l[3])

def total(name,l):   #计算总时间和总金钱
    t_time=0  #每个时间段的时间
    t_bill=0.0  #每个时间段的费用
    month=int(l[0][0].split(':')[0])    #月份
    print("{:s} {:02d}".format(name,month))
    total_bill=0.0
    for i in range(0,len(l),2):
        print(l[i][0][3:],l[i+1][0][3:],end=" ")
        (t_time,t_bill)=calTimeBill(l[i][0],l[i+1][0])
        print("{:d} ${:.2f}".format(t_time,t_bill))
        total_bill+=t_bill
    print("Total amount: $%.2f" % total_bill)

rate=list(map(int,input().split()))
n=int(input())
l=[]
lasting={}	#记录每个人打电话持续时间,以name:[(time,status)]格式存储
for i in range(n):
    l.append(list(zip(input().split())))
l.sort(key=lambda x:cmp(x))   #按照时间从小到大排序
for i in l:
    name=i[0][0]    #姓名
    status=i[2][0]  #on或off状态
    t=i[1][0]   #时间
    if lasting.get(name)==None: #若该姓名还未出现过
        if status=="off-line":	#第一次出现的人不可能是挂电话
            continue
        else:
            lasting[name]=[(t,status)]
    else:   #该姓名已经出现
        if lasting[name][-1][1]!=status:    #此人上一次状态与这次不一样则收录
            lasting[name].append((t,status))
        else:
            if status=="on-line":   #若此人上一次状态与这次一样且是on则将上一次收录的结果覆盖(取最后一次打电话的时间)
                lasting[name][-1]=(t,status)
            elif status=="off-line":    #若此人上一次状态与这次一样且是off则忽略此次记录(取第一次挂电话的时间)
                continue
key=lasting.keys()
for i in key:
    if len(lasting[i])%2!=0:	#若是奇数则最后一次时间是多出来的
        lasting[i].pop()
    if len(lasting[i])!=0:	#这里要判断是否为空
        total(i,lasting[i])


PAT A/甲级1016 Phone Bills 测试点123勘误 文章目录出错点关键点AC代码 题目链接 出错点 名字长度不超过20,则数组长度应至少为21,用以容纳‘\0’,卡测试点123。 输入数据至少有一对配对(…at least one call is well paired in the input…),则可能存在有用户没配对的情况,注意不要输出。即:将头(名字+月份)、尾(总费用)放在内层循环,或者至少要先判断一下。 代码的其他漏洞。毕竟这题的代码... 阅读详情

相关推荐

基于STM32的智能工业机器人臂控制系统

工业机器人臂是智能制造的核心组件,广泛应用于装配、焊接、搬运等任务。基于STM32微控制器的机器人臂控制系统,通过集成伺服电机驱动、运动规划算法和实时通信功能,实现对多轴机械臂的精确控制与路径规划。本设计通过STM32实现了一套智能工业机器人臂控制系统,集成了高效的运动规划算法和实时控制功能。机器人臂系统根据输入的目标位置(如工件坐标),通过运动学计算生成动作轨迹,利用伺服电机驱动器控制关节运动。该系统广泛应用于工业自动化场景,如汽车制造中的零件装配、电子产品生产中的元件焊接以及物流系统中的物料搬运。

stm32d1219的博客 2568

Pat【甲级】 1016 Phone Bills 电话账单(附中文题目) 模拟

文章目录Phone Bills (25分)思路数据存储实现代码运行结果 Phone Bills (25分) A long-distance telephone company charges its customers by the following rules: Making a long-distance call costs a certain amount per minute, depending on the time of day when the call is made. When a

Jacksqh的博客 961

Vivado IP核与License许可全解析:从免费到收费,从评估到部署

本文全面解析Vivado IP核与License许可机制,从免费到收费IP核的选型指南到License的申请与部署策略。详细介绍了Xilinx官方IP核的优势与局限,第三方IP核的风险与应对,以及实战中的资源优化技巧和版本兼容性问题,帮助开发者高效利用Vivado工具链。

weixin_29169505的博客 367

【1016】Phone Bills (25 分)

#include<iostream> #include<stdio.h> #include<stdlib.h> #include<math.h> #include<string.h> #include<algorithm> #include<map> #include<vector> #inclu...

发现问题,并解决问题,批判性思维 704

手把手教你用TI MOSFET搭建0-100mA恒流源电路(附避坑指南)

本文详细介绍了如何使用TI MOSFET SI1204D搭建0-100mA恒流源电路,包括基础原理、电路设计、PCB布局和热管理技巧。通过分步指导和避坑指南,帮助工程师实现高精度、低成本的电流控制方案,适用于LED驱动、传感器激励等多种应用场景。

weixin_29310631的博客 482

SQL进阶技巧:数据预处理如何对数据进行分桶【分箱】?

本文详细介绍了数据分析中常见的几种分桶方式:基于业务规则的分桶、等距分桶及等频分桶等,针对每种分桶方式给出了SQL实现

石榴姐yyds 4018

PAT 甲级 1016 Phone Bills/电话账单(大型模拟题目+小型前缀和求解)

我们可以用 map 容器来装,map容器堆存储的第一维度会自动从小到大排序,然后我们的第二维度就是存储这个人的日期年份和状态,然后存完我们就枚举每一个人,然后先对日期进行排序,然后看前一个状态和后一个状态是否匹配,如果匹配,我们就计算。个人感觉自己写的太麻烦了。

m0_60738889的博客 1178

(8-5)图像特征提取:基于LoG、DoG 和DoH 的斑点检测器

然后,根据给定的参数(标准差、尺度因子),通过调用cv2.GaussianBlur函数创建了两个不同尺度的高斯滤波器,并对图像进行滤波操作。然后,通过遍历DoG滤波器的每个像素,检测局部极值点,并将其添加到关键点列表中。然后,通过遍历DoH滤波器的每个像素,检测局部极值点,并将其添加到关键点列表中。接下来,通过遍历滤波器的每个像素,检测局部极值点,并将其添加到关键点列表中。DoH是一种基于Hessian矩阵的特征检测方法,通过计算Hessian矩阵的行列式来检测图像中的斑点。:实现DoH斑点检测器。

码农三叔 1606

PAT甲级-1016 Phone Bills

PAT甲级-1016 Phone Bills C++ 排序

weixin_74092648的博客 512

跨平台商品模型大解析:亚马逊 vs 阿里 vs 拼多多

本文深入探讨了亚马逊、阿里巴巴和拼多多三大电商平台的商品模型设计,分析了它们在变体关系、商品抽象层级和SKU定义等方面的异同。亚马逊模型以物流和变体为中心,强调全球仓配体系下的标准化管理;阿里模型采用多视角的弹性结构,适用于多类目、多品牌、多卖家环境;拼多多模型则结合平台标准化与商家个性化,适合短期促销和快速上新场景。文章还提供了实践建议,帮助自研电商平台或商品中台的开发者选择合适的商品结构,并强调了商品模型在电商系统中的核心作用。通过对比分析,本文旨在为读者提供商品建模的启发和参考。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 13万+

Vue3 - Vite运行打包时Uncaught ReferenceError: process is not defined(解决vue3+vite报错process is not defined)

vue3,vite,vue3+vite报错,process,UncaughtReferenceError:processisnotdefined,浏览器控制台报错processisnotdefined解决方法,vue3如何解决报错,vite报错怎么办,前端打包UncaughtReferenceError:processisnotdefined,npmrunbuild打包报错,vite打包时出现错误,vue3打包运行找不到process,热更新会报错UncaughtRefer

🏆 前端领域优质创作者 7737

[小白向]1016 Phone Bills (25分)电话账单 链表C语言实现

~~学c以来已经两个月了,终于有能力刷甲级了,脱坑跨保之路漫长呐。 原题见 https://pintia.cn/problem-sets/994805342720868352/problems/994805493648703488 本答案适合跟笔者一样不会C++的小白食用。 1.数据的储存方式 题目要求按照字母序输出个人账单,账单每一项的输出以及on/off的匹配都依赖时间顺序。所以大体思路是建立一个包含通话记录结构的以个人为单位的结构体。思路之一是构建一个广义静态链表,然后分别对每个姓名结点及其通话记

yine100320的博客 377

【AI大模型应用开发】3.2 RAG实战 - RAG应用+UI实现加载本地文件并对话

前面我们实现了RAG基本流程,今天我们在此基础上给它加个UI界面,在浏览器打开,实现上传本地文件、解析,并用大模型实现与该文档的对话。也就是一个阉割版demo版的ChatPDF或知识库对话系统。

同学小张的博客 3054

PAT甲级1016(phone bills)

看注释就行了 #include <bits/stdc++.h> using namespace std; #define fin freopen("in.txt", "r", stdin) #define fout freopen("out.txt", "w", stdout) struct node { int month, day, hh, mm; bool on...

love_wjk的博客 192

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【PAT甲级】 1016 Phone Bills

【PAT甲级】 1016 Phone Bills 原题 A long-distance telephone company charges its customers by the following rules: Making a long-distance call costs a certain amount per minute, depending on the time of day when the call is made. When a customer starts connecting

lemon1219的博客 213

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【PAT 甲级】1016 Phone Bills

1016 Phone Bills

AmiaYukiAchami的博客 392

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【PAT甲级】1016 Phone Bills

A long-distance telephone company charges its customers by the following rules: Making a long-distance call costs a certain amount per minute, depending on the time of day when the call is made. When...

Y_CanFly的小小博客 1956

1016. Phone Bills (25)-PAT甲级真题

1016. Phone Bills (25) A long-distance telephone company charges its customers by the following rules: Making a long-distance call costs a certain amount per minute, depending on the time of

柳婼 の blog 4080

PAT 甲级 1016  Phone Bills

1016 Phone Bills (25 point(s)) A long-distance telephone company charges its customers by the following rules: Making a long-distance call costs a certain amount per minute, depending on the time of...

漫浸天空的雨色的备忘录~ 797

PAT甲级真题 1016 Phone Bills

一、题目 二、思路 1、先将所给数据按姓名、时间进行排序,即这样⬇ 排好序后,上下相邻的on和off即为配对记录; ????C语言中调用qsort对结构体进行排序: 1、记住包含头文件<stdlib.h> 2、示例:qsort(data, n, sizeof(record), cmp);,第一个参数为要排序的数组名;第二个参数为数组中元素个数;第三个参数为数组的数据类型大小,即每个元...

Superpig的博客 336

PAT 甲级 1016. Phone Bills

原题传送门 题意:计算话费:先给你24小时每小时内每分钟的资费,分别是00:00-01:00,01:00-02:00的每分钟话费,单位是美分,然后给你n个电话记录,每条记录会有用户名,月:天:时:分,然后是一个状态,online表示打电话,offline表示挂电话。所以我们要排序匹配。而题目中说了保证每个人的记录是一个月份内的。 注意:如果记录on-off不能匹配的话就不计算在内。 #include

chao2016的博客 1890

PAT 甲级 1016 Phone Bills

PAT 甲级 1016 Phone Bills 用结构体node保存一次call的人名、月、日、小时、分钟信息 因为要按人名输出,然后每个人名下按时间先后输出,所以我们需要给所有call进行排序,排序先按人名大小非降序排序,然后按时间先后排序 排序后,只要容器中前一个是on-line, 后一个是off-line,就是一次well paired 让人名为key,人名下的call的序列(排好序)为值,建立map 计算费用的方法 根据每个时间hh:mm:nn,计算从00:00:00到它的费用 某个时间段的费用 即

weixin_43480561的博客 166

PAT甲级1016——Phone Bills

#include<iostream> #include<vector> #include<map> #include<unordered_map> #include<string> #include<string.h> #include<algorithm> #include<iomanip> usin...

qq_36510764的博客 222

PAT 甲级1016 Phone Bills

A long-distance telephone company charges its customers by the following rules:

m0_61974219的博客 213
上一篇: HDUOJ-1041
下一篇: PAT甲级1017 Queueing at Bank
zerohawk
博客等级 码龄8年 3粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值