无人机运货

news/2025/1/15 13:59:31/文章来源:https://www.cnblogs.com/wqfx/p/18672869


我们的货物一共有重量和体积两种属性,看题目不难看出,至少要有一种属性达到标准才能被无人机搬走,那最简单的结果就出来了:当一件货物的重量和体积都大的离谱的时候,就没有无人机能把它搬动,此时输出的就是-1,反之就一定能有结果。那么,我们将货物进行分类,分成只能被一种无人机搬走和能被两种无人机搬走共计三类。之后只要优先搬走只能被一种无人机搬走的货物,并计算时间就可以了。
代码:
import bisect
from collections import deque
def min_time(a, b, T, x, y, goods):
x.sort()
y.sort()
weight = deque() # 仅重量限制能处理
volume = deque() # 仅体积限制能处理
both = deque() # 两者都能处理
for w, s in goods:
weight_ok = bisect.bisect_right(x, w) >=0 and bisect.bisect_right(x, w)<len(x)
volume_ok = bisect.bisect_right(y, s) >=0 and bisect.bisect_right(y, s)<len(y)
if weight_ok and volume_ok:
both.append((w, s))
elif weight_ok:
weight.append((w, s))
elif volume_ok:
volume.append((w, s))
else:
return -1
time = 0
while weight or volume or both:
for i in range(a):
if weight:
weight.popleft()
elif both:
both.popleft()
for j in range(b):
if volume:
volume.popleft()
elif both:
both.popleft()
time += 1
if not weight and not volume and not both:
break
return time if not weight and not volume and not both else -1
with open("in.txt", "r") as file:
lines = file.readlines()
a,b,t = map(int, lines[0].split())
x= list(map(int, lines[1].split()))
y= list(map(int, lines[2].split()))
goods = [tuple(map(int, line.split())) for line in lines[3:]]
result = min_time(a,b,t,x,y, goods)
print(result)
with open('out.txt', 'w') as f:
f.write(str(result))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/869587.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

西藏定日县6.8级地震InSAR处理详细操作教程

据中国地震台网中心测定:北京时2025年1月7日9时5分,西藏日喀则市定日县(北纬28.5度,东经87.45度)发生6.8级地震,震源深度10千米。 本文以哨兵1A作为数据源,使用DInSAR的方法对本次地震进行干涉测量处理。本文旨在介绍软件处理操作,结果仅供参考,准确结果以官方发布为准…

C# DataGridView删除指定行

C# DataGridView删除指定行| Id | Title | DateAdded | SourceUrl | PostType | Body | BlogId | Description | DateUpdated | IsMarkdown | EntryName | CreatedTime | IsActive | AutoDesc | AccessPermission | | -------------| -------------| -------------| ----------…

C# DataGridView自动保存列的宽度和位置

C# DataGridView自动保存列的宽度和位置| Id | Title | DateAdded | SourceUrl | PostType | Body | BlogId | Description | DateUpdated | IsMarkdown | EntryName | CreatedTime | IsActive | AutoDesc | AccessPermission | | -------------| -------------| -------------…

2025年——29款顶级项目管理工具,提升工作效率必备!

在2025年的数字化时代,项目管理已成为企业成功不可或缺的一环。随着技术的飞速发展,各种项目管理工具应运而生,旨在帮助团队更高效、更准确地完成任务。今天,我们将为大家介绍30款顶级项目管理工具,这些工具不仅涵盖了从任务分配到资源管理的各个方面,还能通过智能化手段…

【PCIE734-1 】基于 PCIe 总线架构的 XCKU060 FPGA 4 路 SFP+光纤通道处理平台

产品概述 PCIE734-1 是一款基于 PCIE 总线架构的 Kintex UltraScale 系列 XCKU060 FPGA 高性能 4 路 SFP+光纤数据处理平台。该平台具有 1 个 PCIe Gen3 x8 主机接口、4 个 SFP+ 10G 光纤接口,可以实现 4 路 SFP+ 10G 光纤的数据实时采集、处理、传输。板 卡 采 用 Xilinx 的 …

封装按钮信息与按钮数量动态显示与提示信息并进行触发按钮组件

标题: 封装弹框并点击动态按钮组件进行触发功能: 封装按钮信息与按钮数量动态显示组件页面: 按钮信息与按钮数量动态显示,提示信息不固定封装组件页面: <template> <el-dialog v-model="dialogVisible" class="stepCustom-dialog custom-dialog…

图表封装组件

图表封装: 图表封装使用:<template> <!--软件模块复用率图表--> <chart-and-table ref="chartAndTableRef" :chart-desc="chartDesc" :chart-loading="chartLoading" :columns="columns" :list=&qu…

vue3+ts展示条项字段

展示条项组件:<el-form v-if="currentStep === 4" label-position="left" label-width="120px" style="display: flex;flex-wrap: wrap;justify-content: flex-start;margin-left: 138px;"> <el-row v-for="(ro…

elasticsearch的RestAPI之操作文档

RestClient操作文档 新增文档 将DB表中的数据同步到elasticsearch 1)查询数据库 1.1)数据库查询后的结果是一个Hotel类型的对象1 @Data2 @TableName("tb_hotel")3 public class Hotel {4 @TableId(type = IdType.INPUT)5 private Long id;6 private St…

【VPX303】基于 3U VPX 总线架构的双银河飞腾 FT-M6678 DSP 信号处理平台(100%全国产化)

​产品概述 VPX303 是一款基于 3U VPX 总线架构的高性能信号处理板,板载 2 片国防科大银河飞腾 FT-M6678 多核浮点运算 DSP,可以实现各种实时性要求较高的信号处理算法。板卡每个 DSP 均支持 5 片 DDR3 SDRAM 实现数据缓存,两片DSP 之间通过 X4 SRIO 进行互联。每个 DSP 均引…