RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-698936

KreyTiNg's questions

Martin Hope
KreyTiNg
Asked: 2025-03-24 01:42:35 +0000 UTC

统一国家考试中同时相交线段的最大数量问题

  • 6

请帮我解决统一国家考试的第 26 题。我只需要解释解决方案,因为我完全不明白网站上回答的内容。

情况如下:在许多计算机系统中,当前时间以“UNIX 时间”格式存储 - 自 1970 年 1 月 1 日开始以来的秒数。

在一个计算机系统上进行了工作量研究。为此,从 UNIX 时间 1633046400 开始的一个月内,记录了该系统中运行的所有进程的开始和结束时间,并输入数据库。

您需要确定从 UNIX 时间 1634515200 开始的一周内系统上同时运行的最大进程数,以及运行此最大进程数的总时间(以秒为单位)。

输入数据:

输入文件的第一行包含一个整数 N — 整个观察期内的进程总数。接下来的 N 行每行包含 2 个整数:一个进程的开始时间和结束时间(UNIX 时间)。输入文件行中的所有数据都由一个空格分隔。

如果开始时间为零,则表示研究开始时该过程处于活动状态。如果完成时间为零,则意味着研究结束时该过程尚未完成。

当时间重合时,则认为所有过程的开始和完成都是同时发生的,即在相应的一秒的开始时。具体来说,如果一个进程的开始时间与另一个进程的结束时间重合,并且此时没有其他开始和结束,则此时活动进程的数量不会改变。

在您的答案中,写下两个整数:首先,从 UNIX 时间 1634515200 开始,一周内同时运行的最大进程数,然后是本周内此最大进程数运行的总秒数。

我试图解决它,但是我编写的代码执行时间太长了,如果它根本无法执行的话。代码:

start_time = 1633046400   # время начала эксперимента
end_time = 1633046400 + 60*60*24*7   # время конца эксперимента
f = open('26 (2).txt')
n = int(f.readline())   # считываю число процессов
count_start = 0   # счетчик процессов, которые происходят на всем времени эксперимента
current_count = 0   # счетчик процессов, которые происходят лишь на части времени
max_count = 0  # максимальный счетчик процессов, происходящих лишь на части времени
timer_count = 0   # счетчик времени, в течение которого происходило максимальное кол-во процессов
lsp = []   # список с началами процессов
lep = []   # список с концами процессов
for i in range(n):
    start_proc, end_proc = f.readline().split()   # считываю начало и конец одного процесса
    if int(start_proc) <= start_time and (int(end_proc) >= end_time or int(end_proc) == 0):   # проверяю, чтобы он происходил на протяжении всего эксперимента
        count_start += 1
    if (int(start_proc) > start_time and int(end_proc) < end_time) or (int(end_proc) > end_time > int(start_proc) > start_time) or (int(start_proc) < start_time < int(end_proc) < end_time):   # проверяю, чтобы он происходил лишь на части эксперимента
        lsp.append(start_proc)  # добавляю время начала процесса
        lep.append(end_proc)    # добавляю время конца процесса

lsp = [int(i) for i in sorted(lsp)]  # сортирую оба списка
lep = [int(i) for i in sorted(lep)]

for i in range(lsp[0],lep[-1]):  # пробегаю через время работы всех процессов
    if i in lsp:     # прибавляю к счетчику процессов, если встретилось начало какого-либо процесса
        current_count += 1
    if i in lep:   # вычитаю из счетчика процессов, если встретился конец какого-либо процесса
        current_count -= 1
    if current_count > max_count and start_time < i < end_time:   # меняю максимальный счетчик, если нахожусь во  времени проведения эксперимента
        max_count = current_count
        timer_count = 0  # обнуляю счетчик времени
    timer_count += 1    # прибавляю ко времени, если счетчик процессов не становится больше

print(count_start + max_count, timer_count) # вывожу счетчики и время

我的主要想法是,如果我在迭代它们的运行时间时遇到任何一个进程的开始,我就把它添加到计数器中,如果它是结束,我就把它减去,但由于文件中的数字很大,代码不起作用。

python
  • 1 个回答
  • 79 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5