Google Codejam 亚太地区测试练习轮:括号顺序

2023-11-25

我花了一天时间解决这个问题并且找不到传递大型数据集的解决方案。

Problem

n 个括号序列由 n 个“(”和 n 个“)”组成。

现在,我们有了所有有效的 n 个括号序列。找到第 k 个最小的序列词典编纂的 order.

例如,以下是按字典顺序排列的所有有效的 3 个括号序列:

((()))

(()())

(())()

()(())

()()()

给定 n 和 k,编写一个算法来给出第 k 个最小序列词典编纂的 order.

对于大数据集:1 ≤ n ≤ 100 and 1 ≤ k ≤ 10^18


这个问题可以通过使用来解决动态规划

  • Let dp[n][m]= 如果我们有的话,可以创建的有效括号的数量n开括号和m右括号。
  • 基本情况:
    dp[0][a] = 1 (a >=0)
  • 使用基本情况填写矩阵:
    dp[n][m] = dp[n - 1][m] + (n < m ? dp[n][m - 1]:0 );

然后,我们就可以慢慢构建第k个括号了。

  • 从...开始a = n 左括号 and b = n 右括号并且当前结果为空

    while(k is not 0):
         If number dp[a][b] >= k: 
                If (dp[a - 1][b] >= k) is true:
                   * Append an open bracket '(' to the current result
                   * Decrease a 
                Else:
                   //k is the number of previous smaller lexicographical parentheses
                   * Adjust value of k: `k -= dp[a -1][b]`,
                   * Append a close bracket ')' 
                   * Decrease b
         Else k is invalid
    

    请注意,按字典顺序,左括号小于右括号,因此我们总是尝试先添加左括号。

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

Google Codejam 亚太地区测试练习轮:括号顺序 的相关文章

  • 查找文本中所有关键字的有效算法

    我有很多字符串 其中包含许多不同拼写的文本 我通过搜索关键字来标记这些字符串 如果找到关键字 我将使用该关键字的关联文本 假设搜索字符串可以包含文本 schw schwa 和 施瓦茨 我有三个关键字 全部解析为文本 schwarz 现在我正
  • 一种良好且简单的随机性测量方法

    获取一长整数序列 例如 100 000 个 并返回序列随机性的测量值的最佳算法是什么 该函数应返回单个结果 如果序列并非完全随机 则返回 0 如果完全随机 则返回 1 如果序列有点随机 它可以给出介于两者之间的东西 例如0 95 可能是一个
  • 简单的排名算法

    我需要创建一个民意调查 按照项目的好坏顺序创建一个排名列表 我打算向每个用户展示两个项目 让他们选择一个他们认为更好的项目 然后多次重复这个过程 它有点类似于您在社交网络电影 我应该如何根据收到的答案对项目进行排名 看着那 这ELO国际象棋
  • 检查有效的 IMEI

    有人知道如何检查有效的 IMEI 吗 我找到了一个可以检查此页面的功能 http www dotnetfunda com articles article597 imeivalidator in vbnet aspx http www do
  • 自动跟踪算法

    我正在尝试写一个simple跟踪例程来跟踪电影中的某些点 本质上我有一系列 100 帧长的电影 在黑暗背景上显示一些亮点 我每帧有大约 100 150 个点 它们在电影的过程中移动 我想跟踪它们 所以我正在寻找一些有效的 但可能不会过度实施
  • 在任意时间范围内找到最佳日/月/年间隔的算法?

    如果您有时间表 请说 March 19 2009 July 15 2011 是否有一种算法可以将该时间范围分解为 March 19 2009 March 31 2009 complete days April 1 2009 December
  • 如何将多边形放入另一个多边形内[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有两个多边形 如下图所示 左边是 粗多边形 右边是 最终多边形 现在 我正在寻找算法来将 最终多边形 拟合到 粗糙多边形 内 并具有
  • 如何在 C# 中以编程方式创建柔和的颜色?

    根据所需的颜色数量均匀分布地生成它们 如果指定的计数为 8 则看起来像这样 List
  • 当给定块大小时反转单链表

    有一个单连接链表 并给出了块大小 例如 如果我的链表是1 gt 2 gt 3 gt 4 gt 5 gt 6 gt 7 gt 8 NULL我的块大小是4然后反转第一个4元素 然后是第二个 4 个元素 问题的输出应该是4 gt 3 gt 2 g
  • heapq.nlargest 的时间复杂度是多少?

    我在看演讲者说 获得t列表中最大的元素n元素可以在O t n 这怎么可能 我的理解是创建堆将是O n 但是复杂度是多少nlargest本身就是O n t or O t 实际的算法是什么 在这种情况下 说话者是错误的 实际成本是O n log
  • 重写修改后的 goto 语义的算法

    我有一大堆使用旧的自行设计的脚本语言编写的遗留代码 我们将它们编译 翻译成 javascript 该语言有条件跳转 跳转到标签 与普通 goto 语句的区别在于 不可能向后跳转 该语言中没有嵌套的 if 语句或循环 由于 javascrip
  • 为什么这个算法的Big-O复杂度是O(n^2)?

    我知道这个算法的大O复杂度是O n 2 但我不明白为什么 int sum 0 int i 1 j n n while i lt j sum 即使我们设定了j n n一开始 我们在每次迭代期间递增 i 并递减 j 因此最终的迭代次数不应该比n
  • 在树结构的 Big-O 表示法中:为什么有些来源引用 O(logN),有些来源引用 O(h)?

    在研究遍历二叉搜索树的任何算法的复杂性时 我看到两种不同的方式来表达同一件事 版本 1 最坏情况下的遍历算法对树的每个高度进行一次比较 因此复杂度是O h 版本 2 最坏情况下的遍历算法对树的每个高度进行一次比较 因此复杂度是O logN
  • 覆盖二维平面上给定点的最小圆

    问题 覆盖 2D 平面上给定 N 个点的圆的最小可能直径是多少 解决这个问题最有效的算法是什么 它是如何工作的 这是最小圆问题 http en wikipedia org wiki Smallest circle problem 请参阅参考
  • 用于查找最近邻居的空间划分算法如何工作?

    为了找到最近的邻居 空间分区 http en wikipedia org wiki Nearest neighbor search Space partitioning是算法之一 它是如何工作的 假设我有一组 2D 点 x 和 y 坐标 并
  • 颜色变换器功能上的堆栈溢出错误

    我有两种颜色 红色 和 鲑鱼色 我需要动态创建面板以及面板背景颜色 这些颜色必须介于两种颜色之间 红色 public Color x y protected void Page Load object sender EventArgs e
  • 密文窃取算法 - 哪一种是正确的?

    网络上提出了两种算法 在这两种算法中 第一部分是相同的 1 Pad the last partial plaintext block with 0 2 Encrypt the whole padded plaintext using the
  • 高度并行化的Levenshtein距离算法

    实际上 我必须实现一个字符串比较 最后得到匹配百分比 不仅仅是布尔结果匹配 不匹配 为此 我找到了 Levenstein 距离算法 但现在的问题是性能 例如 我有 1k 个字符串需要相互比较 现在大约需要 10 分钟 对于每个算法 我已经并
  • 有向未加权图中的最长非循环路径

    什么算法可用于找到未加权有向无环图中的最长路径 动态规划 http en wikipedia org wiki Dynamic programming 它也被引用于最长路径问题 http en wikipedia org wiki Long
  • 找到一个数字所属的一组范围

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

随机推荐

  • 动态添加侦听器到 Google 地图标记

    我正在开发一个页面 该页面使用 Javascript httpObject 获取代码并使用它来更新页面上的两个元素 一个谷歌地图和一个列出标记指向的内容的 DIV 那一点效果很好 问题是 当我创建标记时 我通过 for 循环来完成此操作 并
  • 在管道操作符时如何返回可观察的“forkJoin”

    在我拥有这个运行良好的解析器之前 resolve return forkJoin this getData1 this getData2 this getData3 现在我必须做一些实际上行不通的事情 resolve return this
  • 在构建器模式中管理订单的首选方法是什么?

    我创建了一个流畅的构建器样式模式来帮助加载测试数据 某些方法的顺序很重要 并且想知道管理正确顺序的首选方法是什么 我目前有以下情况 using NUnit Framework TestFixture public class DataBui
  • Swing动画运行速度极慢

    我当前使用 Java Swing 运行的动画存在问题 这是一个离散事件模拟 基于文本的模拟工作正常 我只是在将模拟连接到 GUI 输出时遇到问题 对于此示例 我将模拟 10 辆汽车 这些汽车代表的是JPanels我稍后将详细阐述这一点 因此
  • 如何在 Java Swing 中制作带有复选框的列表?

    在 Java Swing 中拥有每个项目都带有复选框的列表的最佳方式是什么 IE 一个 JList 其中每个项目都有一些文本和一个复选框 一个精彩的答案是这样的CheckBoxList 它实现了 Telcontar 的答案 尽管是 3 年前
  • Selenium:使用 Python 获取元素的坐标或尺寸

    我看到有一些方法可以通过 Selenium 的各种 Java 库获取元素的屏幕位置和尺寸 例如org openqa selenium Dimension 其中提供 getSize and org openqa selenium Point
  • LINQ - 序列不包含元素

    我正在使用 LINQ 查询 如下所示 object collection where t gt t id Equals 2 First 我收到错误 序列不包含元素 为什么结果不包含元素时会抛出错误 当没有找到结果时 它不应该返回 null
  • 在 Android 上以编程方式设置 VPN

    我找到了以下代码以编程方式建立新的 VPN 但我不知道如何使用它来创建我的应用程序 VpnService service context getSystemService VPN SERVICE VpnProfile profile Vpn
  • Visual Studio:如何使用 WPF 编写编辑器扩展

    我正在尝试为 Visual Studio 编写一个编辑器扩展 我已经下载了 VS SDK 并创建了一个新的 Visual Studio Package 项目 但为我创建的虚拟控件是 Windows 窗体控件 而不是 WPF 控件 我正在尝试
  • 如何从 PostgreSQL 存储过程获取结果集?

    我在 PostgreSQL 11 中创建了一个存储过程来执行 CRUD 操作 它对于 1 创建 2 更新 3 删除运行良好 但是当我通过传递来运行读取命令时Condition 4要选择结果集 我收到以下错误 我已经使用 PostgreSQL
  • 在 QGraphicsScene 中显示图像

    我有一个简短的脚本 可以使用 PIL 多次修改图像 我希望能够在完成时显示中间步骤 因此我添加了一个 QGraphics 场景 并尝试在那里显示阶段 它将正确调整最后阶段的大小和居中 退出功能之前发布的最后一个阶段 但它会显示中间步骤 但不
  • php starup sqlsrv无法初始化模块

    我正在尝试将 MSSQL 连接到 PHP 我正在关注this教程 无论如何 在我按照该教程中所述添加 dll 文件后 我收到以下警告 我该如何解决这个问题 php starup sqlsrv unable to initialize mod
  • 证明SQL注入

    我试图在这里简单地证明这个简单的函数不足以阻止世界上的每一个 sql 注入 Function CleanForSQL ByVal input As String As String Return input Replace End Func
  • 具有多个应用程序的 ASP.NET Identity

    因此 我们的组织正在使用 ASP NET MVC 和 Web API 开发一些新的 Web 应用程序 我们决定不使用 Active Directory 进行身份验证 授权 因此看起来带有实体框架的 ASP NET 身份可能会起作用 查看数据
  • 使用 AutoResetEvent 同步两个线程

    我正在尝试实施AutoResetEvent 为此 我使用一个非常简单的类 public class MyThreadTest static readonly AutoResetEvent thread1Step new AutoResetE
  • 如何将视图添加到 LinearLayout,但从下向上?

    可以添加视图LinearLayout一个接一个向上的方向 您可以通过以下方式以编程方式添加它 LinearLayout layout LinearLayout findViewById R id layout layout addView
  • 在 Qt 安装程序框架 (QtIFW) 安装程序中安装 VC++ Redistributables?

    我正在使用 Qt Installer Framework v2 0 1 为我的应用程序构建安装程序 我正在 Windows 上为 x86 和 x64 构建应用程序 因此我正在为每个体系结构构建一个安装程序 每个体系结构中打包有不同的 VC
  • any() 是否被延迟评估?

    我正在编写一个脚本 其中我必须根据多种条件测试数字 如果any满足我想要返回的条件True我想以最快的方式做到这一点 我的第一个想法是使用any 而不是嵌套if语句或多个or链接我的条件 因为如果有任何一个条件满足的话我会很满意True我真
  • 如何防止默认复选框事件覆盖我的 jQuery 检查/取消选中功能?

    我在表格内有一个复选框列表 其中包含一个简单的 jQuery 函数 该函数允许用户单击表格行中的任意位置来选中 取消选中复选框 它工作得很好 除非用户实际单击该复选框 那就不行了 有任何想法吗 这是我的代码 HTML tr tr jQuer
  • Google Codejam 亚太地区测试练习轮:括号顺序

    我花了一天时间解决这个问题并且找不到传递大型数据集的解决方案 Problem n 个括号序列由 n 个 和 n 个 组成 现在 我们有了所有有效的 n 个括号序列 找到第 k 个最小的序列词典编纂的 order 例如 以下是按字典顺序排列的