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 亚太地区测试练习轮:括号顺序 的相关文章

  • 如何找到给定顶点的所有多边形?

    我有一个顶点列表 并且我知道它们之间的连接 我试图找到顶点的所有多边形形状 这些多边形形状不应重叠 我做了一些研究 我认为如果我可以顺时针 或逆时针 没有区别 遍历顶点 我可以检测多边形形状 因此 我寻找顺时针遍历顶点的解决方案 我发现了一
  • 欧拉项目 #18 方法

    我正在研究一个欧拉项目 具体来说 18 总而言之 这个想法是从三角形中找到最大路径 3 7 4 2 4 6 8 5 9 3 3 7 4 9 23 读到这里 大多数人表示 通过从下到上工作可以正确解决这个问题 而不是使用从上到下 贪婪 工作的
  • 我可以在线性时间内检查有界列表是否包含重复项吗?

    假设我有一个Int列表 其中元素已知是有界的 并且列表已知不长于它们的范围 因此它完全有可能不包含重复项 如何才能最快地测试是否是这种情况 我知道nubOrd https hackage haskell org package contai
  • 计算某个数的某次幂的模(该次幂的数字相当大)

    我想自己计算RSA算法 我需要计算某个数的某个幂的模数 问题是 在一定的功率下 这个数字可能会变得相当大 这就是我想要的 x pow n p q 如何有效地确定 x 如果您使用 NET 4 我建议您查看BigInteger http msd
  • 良好的线性代数包[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在为一个项目实现一些谱图算法 其中很大一部分是查找大型稀疏矩阵以及乘法矩阵的特征值和特征向量 我的问
  • 算法挑战:从图像生成配色方案

    背景 因此 我正在开发一个网络应用程序的新版本 而且 我们发现我们的用户非常懒惰 实在是太懒了 事实上 我们为他们做的工作越多 他们就越喜欢这项服务 现有应用程序的一部分要求用户选择要使用的配色方案 但是 我们有一张图片 用户网站的截图 为
  • 平均值大于或等于 k ​​的最长连续子数组

    考虑一个包含 N 个整数的数组 找到最长的连续子数组 使其元素的平均值大于 或等于 给定数字 k 显而易见的答案具有 O n 2 复杂度 我们可以做得更好吗 我们可以通过在 O n 时间内从所有值中减去 k 将这个问题简化为 sum gt
  • 给定一个数字 0-9 的数组和一个整数 n,找到可由输入数组组成且小于 n 的所有整数

    问题是这样的 给你一个数字 0 9 的数组和一个整数n 该数组可能包含任何给定数字的重复项 找到所有可以通过连接输入数组中的数字形成的整数并且小于n 输入数组中的数字可以在输出的元素中重复 例如 输入为 2 5 8 且 n 223 则输出应
  • 二指针算法

    我想了解两指针算法方法 所以我一直在阅读本文 https tp iiita quora com The Two Pointer Algorithm 所以这是问题 假设我们有一个包含 N 个元素的数组 我们想要找到该数组中最大的连续元素序列
  • 在数组中出现超过 n/3 次的数字

    我读过这个问题查找数组中最常见的条目 https stackoverflow com questions 278488 puzzle find the most common entry in an array 乔恩 斯基特的回答真是令人兴
  • 计算字母表的第 n 个 6 个字符排列

    我已经研究了好几天 试图找到解决这个问题的方法 如果需要的话 我很乐意花钱请人咨询时间来解决这个问题 我目前正在使用Python迭代工具 http docs python org 2 library itertools html生成 32
  • 在skiena的书中给出的关于应用dfs在图中查找循环的代码中存在错误

    这是dfs的代码 bool processed MAXV 1 which vertices have been processed bool discovered MAXV 1 which vertices have been found
  • 期望最大化抛硬币的例子

    我最近一直在自学期望最大化 并在这个过程中给自己举了一些简单的例子 http cs dartmouth edu cs104 CS104 11 04 22 pdf http cs dartmouth edu cs104 CS104 11 04
  • 如何编写高效的配对算法?

    我需要一种算法的帮助 该算法可以有效地将人们分组 并确保以前的配对不会重复 例如 假设我们有 10 位候选人 candidates 0 1 2 3 4 5 6 7 8 9 并假设我们有一个先前匹配的字典 这样每个键值对即candidate
  • 创建序列的幂集

    我正在尝试创建一个程序 作为创建序列 字符串或数字的可能组合的基础 这是某种加密 解密程序 我正在使用 Visual Studio 2013 和 C 我想做的是从序列中生成幂集 但我有点困惑并且无法继续进行 这是代码 public stat
  • 动态规划二维平面算法的递归关系帮助

    所以我一直在研究一种算法 我想要完成的任务是 考虑一个 2D 平面 其中有随机分布在 y 上限和下限之间的目标 该集合为T T1 标有坐标 X Y 有一组 S 个传感器 保证覆盖每个目标 每个传感器的半径为 1 坐标为 X Y 每个目标都有
  • 检查列表是否已排序的 Pythonic 方法

    有没有一种Python式的方法来检查列表是否已经排序ASC or DESC listtimestamps 1 2 3 5 6 7 就像是isttimestamps isSorted 返回True or False 我想输入一些消息的时间戳列
  • 在现实生活中,您会使用 heapq Python 模块做什么?

    读完吉多的书后使用 Python 对 2MB RAM 中的一百万个 32 位整数进行排序 http neopythonic blogspot com 2008 10 sorting million 32 bit integers in 2m
  • 将数字公平分配到两组的算法

    给定一组 n 个数字 1 每组的总数最多相差 1 A 中所有数字的总和尽可能接近 B 中所有数字的总和 即分布应该是公平的 有人可以建议一种有效的算法来解决上述问题吗 谢谢 由于数字很小 因此它不是 NP 完全的 为了解决这个问题 你可以使
  • 最小对的总和

    Given 2N点 in a 2D plane 你必须将它们分组为N pairs使得所有对的点之间的距离的总和是最小可能值 所需的输出只是总和 换句话说 如果a1 a2 an分别是第一对 第二对 和第 n 对点之间的距离 则 a1 a2 a

随机推荐

  • 动态添加侦听器到 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 例如 以下是按字典顺序排列的