OD E卷 - 实现【流浪地球】

news/2024/11/29 11:40:42/

文章目录

  • 题目
  • 解题代码

题目

在赤道上均匀部署N个转向发动机,编号为0 ~ N - 1:

  • 默认 为未启动状态,启动方式为手动启动关联启动
  • 如果在时刻1一个发动机被启动,在时刻2 与之相邻的两个发动机就会被关联启动;
  • 若准备启动某个发动机时,它已经启动,则什么都不用做;
  • 发动机0与N-1是相邻的;

输入描述:
第一行输入N E, N为发动机总数,E表示手动启动的发动机总个数;
N, E 在【1, 1000】之间,E<=N;

后续E行,每行输入 T P,分别表示手动启动的时刻,启动发动机编号;
T,P均在【0,N】之间;

输出描述:
第一行为一个数字N,表示最后被启动的发动机个数;
第二行为N个发送机的编号,从小到大排序,以空格分隔;

示例1:
输入:
8 2
0 2
0 6
输出:
2
0 4

示例2:
输入:
8 2
0 1
1 7
输出:
2
4 5

在这里插入图片描述

解题代码

python">
# 第一行输入N E
nums = [int(x) for x in input().split(" ")]
# 总发动机数
count = nums[0]
# 数组保存所有的节点,数组值,代表对应位置启动时间
engines = [-1 for i in range(count)]  # -1表示未激活# 手动启动个数
start_cnt = nums[1]
min_time = float("inf")
for i in range(start_cnt):  # 行数nums1 = [int(x) for x in input().split(" ")]# 更新对应发动机的启动时间engines[nums1[1]] = nums1[0]# 当前时刻min_time = min(min_time, nums1[0])def activate(index, time, count):# index当前已经启动的位置编号# time为当前时刻# count 为发动机总数global engines# 更新当前位置左右的节点left = index - 1if index == 0:left = count - 1right = index + 1if index == count - 1:right = 0# 激活if engines[left] == -1:engines[left] = timeif engines[right] == -1:engines[right] = timedef find(start):  # start 为起始时间 0global enginesflag = Truewhile flag:for i in range(len(engines)):if engines[i] == start:  # 从开始位置向两边激活activate(i, start + 1, len(engines))start += 1active_cnt = 0  # 已激活的数量for i in range(len(engines)):if engines[i] != -1:active_cnt += 1# 全部激活,则停止if active_cnt == len(engines):flag = False# 最后激活的时间节点max_time = engines[0]for i in range(len(engines)):if engines[i] > max_time:max_time = engines[i]count = 0result = ""for i in range(len(engines)):if max_time == engines[i]:result += str(i) + " "count += 1# 输出最后激活的总数 及编号print(count)print(result[:-1])find(min_time)

http://www.ppmy.cn/news/1550888.html

相关文章

MySQL索引与分区:性能优化的关键

在开发过程中&#xff0c;随着数据量的不断增长&#xff0c;MySQL 查询的性能问题会逐渐显现。特别是在大数据量下&#xff0c;查询变得越来越慢&#xff0c;甚至可能导致系统崩溃。为了优化查询&#xff0c;MySQL 提供了 分区&#xff08;Partitioning&#xff09; 和 索引&am…

第八篇:其他窗口部件 QAbstractSlider

QAbstractSlider QAbstractSlider 是 Qt 提供的一个抽象基类&#xff0c;用于表示具有滑块功能的输入控件。它允许用户在一个整数区间内选择值&#xff0c;通过滑块的移动实现直观的交互。该类的典型实现包括水平、垂直滑块以及圆形表盘等多种形式。 子类概述 1. QScrollBar…

浅谈网络 | 应用层之HTTP协议

目录 HTTP 请求的准备HTTP 请求的构建HTTP 请求的发送过程HTTP 返回的构建HTTP 2.0QUIC 协议HTTP 3.0 在讲完传输层之后&#xff0c;我们接下来进入应用层的内容。应用层的协议种类繁多&#xff0c;那从哪里开始讲起呢&#xff1f;不妨从我们最常用、最熟悉的 HTTP 协议 开始。…

数据库(总结自小林coding)|事务的四大特性、数据库的事务隔离级别、MySQL的执行引擎、MySQL为什么使用B+树来作索引

数据库&#xff08;总结自小林coding&#xff09;|事务的四大特性、数据库的事务隔离级别、MySQL的执行引擎、MySQL为什么使用B树来作索引 事务的四大特性有哪些数据库的事务隔离级别有哪些&#xff1f;MySQL的执行引擎有哪些&#xff1f;MySQL为什么使用B树来作索引 事务的四大…

六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序

本章讲述数据结构中的六大排序算法 欢迎大佬们踊跃讨论&#xff0c;感谢大家支持&#xff01; 我的博客主页链接 六大排序算法 一.插入排序1.1 直接插入排序1.2 希尔排序 二.选择排序2.1 单向选择排序2.2双向选择排序2.3 堆排序 三.交换排序3.1 冒泡排序3.2 快速排序3.2.1 Hoa…

csp-j初赛模拟试题(解析)

题目&#xff1a; 在 C中&#xff0c;以下哪个关键字用于实现多态性&#xff1f; A. virtualB. staticC. externD. const 以下数据结构中&#xff0c;不属于线性结构的是&#xff08; &#xff09;。 A. 栈B. 队列C. 二叉树D. 链表 一个有 8 个顶点的无向图&#xff0c;若每个…

15分钟做完一个小程序,腾讯这个工具有点东西

我记得很久之前&#xff0c;我们都在讲什么低代码/无代码平台&#xff0c;这个概念很久了&#xff0c;但是&#xff0c;一直没有很好的落地&#xff0c;整体的效果也不算好。 自从去年 ChatGPT 这类大模型大火以来&#xff0c;各大科技公司也都推出了很多 AI 代码助手&#xff…

HTTP 管道传输与多路复用

HTTP 管道传输与多路复用 1. HTTP 管道传输&#xff08;Pipelining&#xff09; 概念&#xff1a; HTTP 管道传输&#xff08;Pipelining&#xff09;是 HTTP/1.1 协议的一项技术&#xff0c;它允许客户端在同一 TCP 连接中同时发送多个 HTTP 请求&#xff0c;而无需等待前一…