蓝桥杯2023年第十四届省赛真题-工作时长

本文介绍了如何在Excel中对数据进行增序排序,设置特定格式以处理可能超过24小时的总时长,并使用C++代码片段演示了如何计算并输出总时长。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
文件数据

  1. 把数据复制到excel中

  2. 数据按照增序排序

  3. 选中列数据,设置单元格格式,选择下述格式。注意,因为求和之后总小时数可能会超过24小时,所以不要选择最前面是hh的
    在这里插入图片描述

  4. 设置B2 = A2 - A1, B4 = A4 - A3;然后选中已经算出来的这四格,下拉,就能自动算出来了
    在这里插入图片描述

  5. 对算出来的数据进行求和
    在这里插入图片描述
    直接输出计算的总时长即可

#
### 蓝桥杯中的工作时长解题技巧 在蓝桥杯以及实际工作中,涉及“工作时长”的题目往往可以通过多种算法解决。以下是几种常见的方法及其应用场景: #### 1. **二分查找** 对于求解最短时间完成任务或者分配资源等问题,“二分答案”是一个非常高效的策略。这类问题通常可以转化为验证某个条件是否成立的形式,进而利用二分法快速缩小范围。 例如,在多个工人完成若干任务的情况下,如果目标是最小化最长的工作时长,则可以通过设定一个可能的时间上限,并逐步调整这个上限直到找到最小值[^1]。 ```python def min_max_worktime(tasks, workers): def can_finish(max_time): count = 1 current_sum = 0 for task in tasks: if current_sum + task > max_time: count += 1 current_sum = 0 current_sum += task return count <= workers low, high = max(tasks), sum(tasks) while low < high: mid = (low + high) // 2 if can_finish(mid): high = mid else: low = mid + 1 return low ``` --- #### 2. **贪心算法** 当面对的是如何合理安排任务顺序以最大化收益或最小化成本的问题时,贪心算法可能是首选方案之一。尽管这种方法并不总是能得出全局最优解,但在许多情况下确实有效[^2]。 比如按优先级排序的任务列表中,先处理耗时较短的任务可能会带来更好的整体表现;又或者是按照单位时间内产生的价值高低来进行调度决策。 ```python def schedule_tasks_greedy(tasks): # 假设tasks是由(所需时间, 收益)组成的元组数组 sorted_tasks = sorted(tasks, key=lambda x: x[1]/x[0], reverse=True) total_profit = 0 time_spent = 0 for t, p in sorted_tasks: if time_spent + t <= WORK_TIME_LIMIT: # 定义最大允许工时时限 total_profit += p time_spent += t return total_profit ``` --- #### 3. **位运算优化** 针对某些特殊类型的输入数据结构(如布尔矩阵表示员工技能覆盖情况),采用位运算是提升程序运行速度的好办法。它可以极大地简化逻辑判断过程并节内存消耗[^3]。 假设我们需要找出能够合作完成某项工作的小组成员组合,那么就可以借助位掩码技术实现这一点。 ```c++ // C++ 示例:使用位运算检测是否存在满足条件的子集 bool has_valid_team(vector<int>& skills, int required_skills){ int mask = accumulate(skills.begin(), skills.end(), 0, bit_or<>()); return (mask & required_skills) == required_skills; } ``` --- ### 总结 以上三种方式各有千秋,具体选用哪一种取决于题目特点和个人熟悉程度。无论是运用经典的二分查找降低复杂度、尝试简单的贪婪策略获取近似解答还是巧妙地引入位操作加快计算步伐,都是值得学习借鉴的经验之谈。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值