感人片段

2023-11-23

任何人都可以建议我为此的算法。

您将获得 x 轴上 N 个线段的起点和终点。 这些片段中有多少可以被恰好两条垂直于它们的线接触到,即使是在它们的边缘?

输入示例:

3
5
2 3
1 3
1 5
3 4
4 5
5
1 2
1 3
2 3
1 4
1 5
3
1 2
3 4
5 6

示例输出:

Case 1: 5
Case 2: 5
Case 3: 2

解释 :

  • 情况 1:我们将在点 2 和 4 处绘制两条与 X 轴相交的线(平行于 Y 轴)。这两条线将接触所有五个线段。
  • 情况 2:即使一条线在 2 处穿过 X 轴,我们也可以触及所有点。
  • 情况3:在这种情况下不可能触摸超过两个点。

限制条件:

1 ≤ N ≤ 10^5
0 ≤ a < b ≤ 10^9

假设我们有一个有效支持以下操作的数据结构:

  1. 添加一段。

  2. 删除一个段。

  3. 返回覆盖一个点(即“最佳”点)的最大线段数。

如果有这样的结构,我们可以通过以下方式有效地使用初始问题:

  1. 让我们创建一个事件数组(一个事件用于每个段的开始,一个事件用于结束)并按 x 坐标排序。

  2. 将所有段添加到神奇的数据结构中。

  3. 迭代所有事件并执行以下操作:当段开始时,将当前覆盖的段数加一并将其从该数据结构中删除。当一个段结束时,将当前覆盖的段的数量减一,并将该段添加到神奇的数据结构中。在每个事件之后,用当前覆盖的段数的值(它显示了与当前事件对应的点覆盖了多少段)加上上述数据结构返回的最大值(它显示了我们如何可以以最佳方式选择另一个点)。

如果这个数据结构可以执行所有给定的操作O(log n),那么我们有一个O(n log n)解决方案(我们对事件进行排序,并对排序后的数组进行一次传递,为每个事件对此数据结构进行恒定数量的查询)。

那么我们如何实现这个数据结构呢?嗯,线段树在这里工作得很好。添加段就是向特定范围添加一个。删除一个段就是将特定范围内的所有元素减一。获取最大值只是线段树上的标准最大值操作。因此,我们需要一个支持两种操作的线段树:向范围添加一个常量并获取整个树的最大值。可以在O(log n)每次查询的时间。

还有一点需要注意:标准线段树要求坐标很小。我们可以假设它们永远不会超过2 * n(如果不是这种情况,我们可以压缩它们)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

感人片段 的相关文章

  • 贝尔曼福特算法可以有任意的边顺序吗?

    我刚刚开始学习新算法 但当我阅读 极客为极客而写的贝尔曼福特算法 时 我陷入了困境 http www geeksforgeeks org dynamic programming set 23 bellman ford algorithm h
  • 在树结构的 Big-O 表示法中:为什么有些来源引用 O(logN),有些来源引用 O(h)?

    在研究遍历二叉搜索树的任何算法的复杂性时 我看到两种不同的方式来表达同一件事 版本 1 最坏情况下的遍历算法对树的每个高度进行一次比较 因此复杂度是O h 版本 2 最坏情况下的遍历算法对树的每个高度进行一次比较 因此复杂度是O logN
  • “Desort”向量(撤消排序)

    在Matlab中 sort返回排序后的向量和索引向量 显示哪个向量元素已移动到以下位置 v ix sort u Here v是一个包含所有元素的向量u 但已排序 ix是一个向量 显示每个元素的原始位置v in u 使用 Matlab 的语法
  • 如何按键中的值对 Redis 哈希进行排序

    Redis 有没有一种好方法来获取按值排序的哈希中的键 我查看了文档 但没有找到直接的方法 另外有人可以解释一下redis中的排序是如何实现的 以及什么吗 本文档 http redis io commands SORT using hash
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • 使用 dc.js 按条形值对条形图中的条形进行排序(排序)

    如何通过维度的计算值而不是维度本身的名称对 dc js 示例中的 x 轴 维度 进行排序 例如 请考虑序数条形图的 dc js 示例 https github com dc js dc js blob master web examples
  • 覆盖二维平面上给定点的最小圆

    问题 覆盖 2D 平面上给定 N 个点的圆的最小可能直径是多少 解决这个问题最有效的算法是什么 它是如何工作的 这是最小圆问题 http en wikipedia org wiki Smallest circle problem 请参阅参考
  • Java 8 流排序字符串列表[重复]

    这个问题在这里已经有答案了 我正在流上调用排序方法 java 文档说 Sorted 方法返回一个由该流的元素组成的流 并根据自然顺序排序 但是当我运行下面的代码时 List
  • 你能用 C# 编写一个同样优雅的排列函数吗?

    我非常喜欢这个 6 行解决方案 并尝试在 C 中复制它 基本上 它会排列数组的元素 def permute xs pre if len xs 0 yield pre for i x in enumerate xs for y in perm
  • Java 中查看 ArrayList 是否包含对象的最有效方法

    我有一个 Java 对象的 ArrayList 这些对象有四个字段 我用其中两个字段来将对象视为与另一个对象相等 我正在寻找最有效的方法 给定这两个字段 以查看数组是否包含该对象 问题在于这些类是基于 XSD 对象生成的 因此我无法修改类本
  • 按日期合并多个日志文件,包括多行

    我有几个包含所有以时间戳开头的行的日志 因此以下内容可以按预期合并它们 cat myLog1 txt myLog2 txt sort n gt combined txt 问题是 myLog2 txt 还可以包含没有时间戳的行 例如 java
  • 用于在链表中查找结点的生产代码

    我在一次采访中被问到这个问题 我被要求编写代码 用于在 O 1 空间和线性时间的生产环境中在链表 其形式为 Y 形式 双臂不一定相等 中查找结点 我想出了这个解决方案 我以前在某处见过 1 Measure lengths of both l
  • 在 Python 中从 Excel 复制 YEARFRAC() 函数

    因此 我使用 python 来自动执行一些必须在 Excel 中执行的重复任务 我需要做的计算之一需要使用yearfrac 这在Python中被复制了吗 I found this https lists oasis open org arc
  • 从给定的项目列表创建子列表

    我首先要说的是以下问题不是为了家庭作业目的即使因为我几个月前就完成了软件工程师的工作 无论如何 今天我正在工作 一位朋友向我询问了这个奇怪的排序问题 我有一个包含 1000 行的列表 每行代表一个数字 我想创建 10 个子列表 每个子列表都
  • 如何使用自定义比较器以不同的词汇顺序对数组进行排序?

    所以 我对 C 还很陌生 我正在尝试使用自定义比较器来订购数组 我创建了一个类 class MySorter IComparer public int Compare object x object y var chars jngmclqs
  • 查找最接近点的多边形顶点的索引

    Heading 我需要找到最接近点的多边形的索引 所以在这种情况下 输出将是 4 和 0 这样 如果添加了红点 我就知 道将顶点放置在数组中的位置 有谁知道从哪里开始 抱歉 如果标题有误导性 我不知道如何正确表达它 In this case
  • 使用模数按字母顺序对列表进行排序

    我在获取元素列表并按字母顺序对它们进行排序方面没有任何问题 但我很难理解如何使用模数来做到这一点 更新 这是按我的方式工作的代码 但是 我更喜欢下面提供的答案的可重用性 因此接受了该答案
  • 嵌套列表的重叠会产生不必要的间隙

    我有一个包含三个列表的嵌套 这些列表由 for 循环填充 并且填充由 if 条件控制 第一次迭代后 它可能类似于以下示例 a 1 2 0 0 0 0 0 0 4 5 0 0 0 0 0 0 6 7 根据条件 它们不重叠 在第二次迭代之后 新
  • 找到一个数字所属的一组范围

    我有一个 200k 行的数字范围列表 例如开始位置 停止位置 该列表包括除了非重叠的重叠之外的所有类型的重叠 列表看起来像这样 3 5 10 30 15 25 5 15 25 35 我需要找到给定数字所属的范围 并对 100k 个数字重复该
  • 确定一组日期的事件重复模式

    我正在寻找一种模式 算法或库 它将采用一组日期并在退出时返回重复的描述 即集合 11 01 2010 11 08 2010 11 15 2010 11 22 2010 11 29 2010 会产生类似 十一月的每个星期一 的结果 有没有人以

随机推荐

  • 将 uuid.h 包含到 Android NDK 项目中

    我正在使用 NDK 将 C 程序移植到 Android 上 该程序使用uuid h or uuid uuid h库取决于可用的库 当我编译程序时 给出错误消息uuid h No such file or directory 我是 NDK 的
  • HTML5 数据库 API:同步请求

    我目前在 html5 iphone web 应用程序上使用客户端数据库 在我的代码中 我需要检查本地数据库中是否存在一行 function isStarted oDB var ret null oDB query sql params fu
  • 哪些性能计数器可用于识别 ASP.NET 瓶颈?

    鉴于此处的图表 我应该注意什么来识别瓶颈 正如您所看到的 请求在负载下平均花费近 14 秒 其中大部分时间归因于 New Relic 分析数据中的 CLR 在特定页面的性能细分中 它将大部分时间归因于 WebTransaction aspx
  • SQL Azure:与 SQL Azure 的连接引发异常

    当我从代码连接到 SQL Azure 时 出现以下错误 我能够从 SQL Server Management Studio 成功连接到 SQL Azure System Data SqlClient SqlException 建立与 SQL
  • 通过 PHP 解析 JavaScript 文件

    我有一个 JavaScript 文件 我想在其中包含一些 php 代码 问题是我在 PHP 上有一些定义 我也想在 JS 上使用它们 有没有办法在 HTML 中包含 js 文件 允许服务器首先使用 php 解释它 在下载到客户端之前 谢谢
  • Numpy 中的结构化数组没有二元运算符吗?

    好的 在学习完 numpy 结构化数组的教程后 我可以创建一些简单的示例 from numpy import array ones names scalar 1d array 2d array formats float64 3 float
  • 我可以将 TLS 与 Send-MailMessage cmdlet 结合使用吗?

    我正在尝试使用 PowerShell 发送电子邮件 但需要使用 TLS 我可以使用 Send MailMessage cmdlet 执行此操作吗 这是我的代码 file c Mail content txt if test path fil
  • 仅从数据库中类似日志的表中读取新行

    我们遇到这样的情况 多台服务器将行块插入关系数据库的表中 而一台服务器偶尔从表中读取新数据 该表在概念上是某种日志文件 数据仅插入但从未修改 读取服务器显示日志的尾部 有没有办法让读取服务器只读取新数据 我们可以按照自己的意愿自由地构建表格
  • Parallel.For 和 Parallel.For 之间有区别吗?

    之间有区别吗TParallel For and TParallel For 两者都可以在 Delphi 10 Seattle 中编译 那么我应该坚持哪一个呢 方法定义为TParallel For需要 符号来转义 areserved word
  • 为什么 gcloud 命令启动缓慢?

    只是打字gcloud如需帮助请花 5 秒钟 gcloud gcloud 0 30s user 0 13s system 7 cpu 5 508 total gcloud version Google Cloud SDK 128 0 0 al
  • 在运行时从不同的文件加载 Properties.Settings

    有没有办法从默认文件以外的其他文件加载设置App config运行时文件 我想在加载默认配置文件后执行此操作 我用Settings SettingsVisual Studio 中的 GUI 来创建我的App config为我归档 配置文件最
  • 带边框/轮廓的六边形形状

    我知道可以使用以下代码创建六边形形状 hex before content width 0 height 0 border bottom 30px solid 6C6 border left 52px solid transparent b
  • 在同一个 apache 服务器上运行 django 和 Flask

    我正在尝试在同一个 apache 服务器上运行 django 和 Flask WSGISocketPrefix var www wsgi
  • 字符串变量可以设置多少个字符?

    我有一个字符串类型的变量 例如string test 我可以设置多少个字符进行测试 谢谢 所有引用类型 如字符串 实例的最大大小是有限的 由 CLR 改为 2GB 由于 NET 中的一个字符占用 2 个字节 这意味着一个字符串最多可以容纳大
  • StreamProvider 不更新状态

    我正在尝试使用StreamProvider from this很棒的包 但我一直在努力让特定的流正常工作 我创建一个StreamController我用它来添加数据Stream通过其Sink 所有这一切似乎都运作良好 但是当使用这个Stre
  • 允许 PHP 会话延续到子域

    我对所有用户数据以及当用户访问其个人资料时使用 PHP 会话 不是 cookie 除了会话 id cookie user mydomain example他们会立即 注销 直到删除子域 有没有办法接受来自所有域的会话 只要它 mydomai
  • Internet Explorer 中的 标记

    既没有标签也不text decoration blink Internet Explorer 支持 css 中的样式 有什么技术可以在 IE 中制作闪烁文本吗 如果可能的话 避免眨眼 这会惹恼别人 但你可以用 JS jQuery 来做到这一
  • ASP.NET Identity 2 支持匿名用户吗?

    我想允许匿名 尚未注册和注册的用户在我的网站上发帖 Posts table Id int Subject nvarchar Body nvarchar UserId uniqueidentifier 该项目使用最新的 MS 技术 ASP N
  • 将 GVim 配色方案更改为类似于命令行 Vim

    是否可以使 GVim 的配色方案与命令行版本 Vim 中的配色方案完全匹配 与白色背景的 GVim 相比 我更喜欢 Vim 的颜色 但我仍然想使用 GVim 因为 Shift 键在命令行版本上映射得不太好 是的 可以使 gvim 与终端 V
  • 感人片段

    任何人都可以建议我为此的算法 您将获得 x 轴上 N 个线段的起点和终点 这些片段中有多少可以被恰好两条垂直于它们的线接触到 即使是在它们的边缘 输入示例 3 5 2 3 1 3 1 5 3 4 4 5 5 1 2 1 3 2 3 1 4