Questions tagged «fastest-algorithm»

渐近时间复杂度最小的答案将赢得最快的算法竞赛。对于基于实际运行时的挑战,请改用[最快的代码]。

3
n位精度的近似浮点数
我们有一个r介于0和1之间的浮点数和一个整数p。 查找具有最小分母的整数分数,其分数近似r至少为- p位数。 输入:(r一个浮点数)和p(整数)。 输出:a和b整数,其中 a/b(以浮点数表示)近似r到p数字。 b 是可能的最小此类正整数。 例如: 如果r=0.14159265358979和p=9, 那么结果是a=4687和b=33102, 因为4687/33102=0.1415926530119026。 任何解决方案都必须在理论上适用于任意精度类型,但是由实现的固定精度类型引起的限制并不重要。 精度表示在“ 0.” 之后的数字位数r。因此,如果r=0.0123和p=3,a/b则应从开始0.012。如果的p小数部分的第一位数字为r0,则可以接受未定义的行为。 获胜标准: 算法上最快的算法获胜。速度以O(p)为单位。 如果有多个最快的算法,则最短者获胜。 我自己的答案被排除在可能的获胜者之外。 ps数学部分实际上看起来似乎容易得多,我建议您阅读这篇文章。

7
Digital River(最快捷的解决方案)
这是我的第一个问题,所以我希望它顺利进行。 背景: 您可能正在考虑的不是河流。问题围绕数字河流的概念展开。数字河流是数字的序列,其中数字以下n是n加上其数字的总和。 说明: 12345后跟12360,因为1 + 2 + 3 + 4 + 5 = 15,所以12345 + 15给出12360。类似地145后跟155。如果数字河的第一个数字,M我们将其称为河M。 例如:河480是从{480,492,507,519 ....}开始的序列,河483是从{483,498,519,....}开始的序列。正常的河流和河流可以汇合,数字河流也是如此。当两条数字河流共享一些相同的值时,就会发生这种情况。 例: 河480在519与河483相遇。河480在507与河507相遇,而从不与河481相遇。每条数字河最终都会与河1,河3或河9相遇。 编写一个程序,该程序可以为给定的整数确定n河流n首先遇到这三条河流之一的值。 输入项 输入可能包含多个测试用例。每个测试用例都占一行,并包含一个整数n(1 <= n <= 16384)。值为0for的测试用例将n终止输入,并且不得对该测试用例进行处理。 输出量 对于输入中的每个测试用例,首先输出测试用例编号(从1开始),如示例输出中所示。然后在单独的行输出中,行“首先在y处遇到河x”。y是河流n首先与河流相遇的最小值x(x = 1或3或9)。如果河流在处与河流n相交的值大于一个值,则输出最低值。在两个连续的测试用例之间打印空白行。xyx 测试用例 输入: 86 12345 0 输出: Case #1 first meets river 1 at 101 Case #2 first meets …

7
最重的递增子序列
子序列是可以通过删除某些元素而不更改其余元素的顺序而从另一个序列派生的序列。严格增加的子序列是每个元素都大于前一个元素的子序列。 序列中增加最重的子序列是元素数量总和最大的严格增加的子序列。 用您选择的语言实现一个程序或函数,该程序或函数查找给定的非负整数列表中最重的递增子序列的元素和。 例子: [] -> 0 ([]) [3] -> 3 ([3]) [3, 2, 1] -> 3 ([3]) [3, 2, 5, 6] -> 14 ([3, 5, 6]) [9, 3, 2, 1, 4] -> 9 ([9]) [3, 4, 1, 4, 1] -> 7 ([3, 4]) [9, 1, 2, 3, 4] -> …

1
替代变量的唯一输出数
给定一组这样的公式: bacb bcab cbba abbc 给出一种算法,该算法可以找到在每个公式中用每个变量替换“ 0”或“ 1”时可获得的唯一结果的数量。 有(k!)^2公式,每个公式都有2k-1变量和k^2术语。用表示你的渐近性k。 最快的算法获胜。如果出现平局,则使用渐近内存使用率较低的解决方案为准。如果那仍然是平局,则第一帖获胜。 对于上述示例,通过替换变量可以获得以下结果: 1110, 0110, 1001, 0100, 1000, 0000, 0010, 1101, 1111, 0001, 1011, 0111 因此正确的答案是12。除其他外,1010不能使用上述公式得出。 我做了三个试验的情况下,与相应的解决方案,230,12076和1446672。

2
最快的算法优化挑战
这是我对渐近复杂性挑战的第一个实验,尽管我完全满意代码中的答案,只要它们带有时间复杂度的解释即可。 我有以下问题。 考虑任务T_1,... T_n和过程M_1,...,M_m。每个任务需要一定的时间才能执行,具体取决于过程。 每个任务还​​需要花费一定数量才能执行,具体取决于过程。 这些任务必须严格执行(它们不能并行完成),并且更改proc需要花费时间。启动任务后,无法将其从一个进程转移到另一个进程。 最后,每个任务必须在一定时间之前完成。 任务 目的是给出一种算法(或一些代码),该算法给出上述表格的五个表,以最大程度地减少完成所有任务的总成本,同时确保所有任务在其截止日期之前完成。如果这不可能,我们只是报告无法完成。 得分了 您应该根据变量n,m和d给出解决方案的大哦复杂度,其中d是最后期限。大Oh复杂度中应该没有不必要的常量。因此,例如,O(n / 1000)应写为O(n)。 只需将n = 100,m = 100和d = 1000设置为您陈述的复杂度即可计算出分数。您想要最小的分数。 决胜局 如果是平局,则第一个答案将获胜。 增加了笔记 log 答案的时间复杂度将以2为底。 计分板 来自KSFT的10 ^ 202(Python)首先提交,因此获得了赏金。 来自DominikMüller(Scala)的10 ^ 202

7
计算输入中循环词的数量
循环词 问题陈述 我们可以将循环词视为一个圆圈中写的词。为了表示一个循环词,我们选择一个任意的起始位置并按顺时针顺序读取字符。因此,“图片”和“图形”是同一循环词的表示。 给您一个String []单词,每个元素代表一个循环单词。返回表示的不同循环字的数量。 最快获胜(大O,其中n =字符串中的字符数)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.