笔试时间:2023年8月30日 秋招  第一题  题目:智慧打卡系统  某家高科技公司为方便员工省去每日上下班的打卡操作,计划推广使用智慧打卡系统。其运行的原理是系统会记录员工当日进出门禁的时间(员工在上班期间可能会多次进出门禁,格式为24小时制,小时:分钟,“HH:MM”)。现在请编写一个算法,计算员工当日的工作时长(单位:分钟),具体要求如下:  1、单次离岗15min以内,不从工作时长中扣除。  2、12:00至14:00为午休时间,不算工作时长。  3、18:00至19:30为晚饭时间,不算工作明长。  解答要求  时间限制:C/C++1000ms其他语言:2000ms内存限制:C/C++256MB其他语言:512MB  输入描述  第一行:员工当天进门禁的次数n。  第二行:员工当天进门禁的所有时间,以空格分隔。  第三行:员工当天出门禁的次数m。  第四行:员工当天出门禁的所有时间,以空格分隔。  注:0<n,m<100,不存在相同的出入门禁时间,也不存在连续的出门禁或入门禁的情况。  输出描述  当日的工作时长。  样例输入     示例一:   5   07:50 08:50 12:30 13:40 19:50   5   08:45 12:20 13:20 18:30 20:30   示例二:   4   08:30 12:30 14:00 18:20   4   12:00 13:00 16:50 19:00    样例输出     530   解释:员工的工作时段为07:50-12:00,14:00~18:00,19:50~20:30,工作时长为530分钟   示例二:   380   解释员工的工作时段为08:30~12:00,14:00~16:50,工作时长为380分钟    参考题解  模拟  Python:  from datetime import datetimeformat = "%H:%M"n = int(input())intime = [c for c in input().split()]for i in range(n):    intime[i] = datetime.strptime(intime[i], format)m = int(input())outtime = [c for c in input().split()]for i in range(n):    outtime[i] = datetime.strptime(outtime[i], format)wuxiu_s, wuxiu_e = datetime.strptime("12:00", format), datetime.strptime("14:00", format)wanfan_s, wanfan_e = datetime.strptime("18:00", format), datetime.strptime("19:30", format)res = 0tmp1 = []tmp2 = []tmp = []#先处理小于15分钟的情况for i in range(n-1):    if ((intime[i+1] - outtime[i]).total_seconds() / 60) <= 15:        tmp1.append(i+1)        tmp2.append(i)n1, n2 = [], []for i in range(n):    if i not in tmp1:        n1.append(intime[i])    if i not in tmp2:        n2.append(outtime[i])intime, outtime = n1, n2for i in range(len(intime)):    # 午休前进来 午休后出去    if intime[i] < wuxiu_s and (wuxiu_s < outtime[i] < wuxiu_e or outtime[i] > wuxiu_e) :        res += (wuxiu_s - intime[i]).total_seconds()/60    # 午休进来  午休出去    elif wuxiu_s < intime[i] < wuxiu_e and wuxiu_s < outtime[i] < wuxiu_e : continue    #午休进来 午休后 晚饭前出去    elif wuxiu_s < intime[i] < wuxiu_e and wuxiu_e < outtime[i] < wanfan_s :        res += (outtime[i] - wuxiu_e).total_seconds()/60    # 午休进来  晚饭的时候出去    elif wuxiu_s < intime[i] < wuxiu_e and wanfan_s < outtime[i] < wanfan_e :        res += (wanfan_s - wuxiu_e).total_seconds()/60    #午休进来 晚饭后出去    elif wuxiu_s < intime[i] < wuxiu_e and wanfan_e < outtime[i]:        res += (wanfan_s - wuxiu_e + outtime[i
点赞 14
评论 2
全部评论

相关推荐

01-02 20:08
马鞍山学院 Java
27届学院本誓死冲击...:实习经历最好写上做了什么项目,负责什么业务,否则有点假
点赞 评论 收藏
分享
01-28 16:12
中南大学 Java
几年前还没有chatgpt的时候,刷题真的是很痛苦。刷不出来只能看题解,题解有几个问题:第一个是每次看的写题解的人都不一样,很难有一个统一的思路;第二个也是最重要的是,题解只提供了作者自己的思路,但是没有办法告诉你你的思路哪里错了。其实很少有错误的思路,我只是需要被引导到正确的思路上面去。所以传统题解学习起来非常困难,每次做不出来难受,找题解更难受。但是现在chatgpt能做很多!它可以这样帮助你 -1. 可以直接按照你喜欢的语言生成各种解法的题解和分析复杂度。2. 把题和你写的代码都发给它,它可以告诉你 你的思路到底哪里有问题。有时候我发现我和题解非常接近,只是有一点点🤏想错了。只要改这一点点就是最优解。信心倍增。3. 如果遇到不懂的题解可以一行一行询问为什么要这样写,chatgpt不会嫌你烦。有时候我觉得自己的range写错了,其实那样写也没错,只是chat老师的题解有一点优化,这个它都会讲清楚。4. 它可以帮你找可以用同类型解法来做的题。然后它可以保持解法思路不变,用一个思路爽刷一个类型的题。如果题目之间思路又有变化,它会告诉你只有哪里变了,其他的地方还是老思路。5. 它也可以直接帮你总结模板,易错点。经过chat老师的指导,我最大的改变是敢刷题了。之前刷题需要先找某一个人写的算法题repo,然后跟着某一个人他的思路刷他给的几个题。如果想写别的题,套用思路失败了,没有他的题解,也不知道到底哪里错了;看别人的题解,思路又乱了。这个问题在二分查找和dp类型的题里面特别常见。但是现在有chat老师,他会针对我的代码告诉我我哪里想错了,应该怎么做;还按照我写代码的习惯帮我总结了一套属于我的刷题模板。每天写题全是正反馈!
明天不下雨了:那我建议可以用 chatgpt atlas 或者 dia 去刷,也可以用 chrome 加个 ai 插件去刷 左边刷题右边 chat 效果很好
AI时代的工作 VS 传...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务