RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1573038
Accepted
Kiawem
Kiawem
Asked:2024-03-24 21:42:22 +0000 UTC2024-03-24 21:42:22 +0000 UTC 2024-03-24 21:42:22 +0000 UTC

我想不出任何逻辑来解决这个问题

  • 772

我无法想出解决问题的想法,请告诉我你可以为下面的问题想出什么逻辑

输入是一个字符串,如果一个字符串的子字符串具有相同的长度,并且具有相同的字符集,则该字符串被认为是漂亮的。优美线条示例:011011011;101101101;1010; 1; 0000; 111 丑行:000101;10101;0001001 问题目的:打印可以纠正丑线的最少步骤数。

示例:000101 - 1 因为我们可以将第二个位置的 0 更改为 1 并得到 010101 0001001 - 2,所以我们可以将所有 1 替换为 0。

计算零和一,然后从较大的数字中减去较小的数字的想法是不合适的,因为在第一个示例中,4(零)减去2(单位)将得到答案2,但作为你可以看到,你可以一步纠正它。我以为它可以创建空白(比方说“漂亮”的空白,例如 11;00 等等),但事实上,有时你可以简单地将所有数字更改为相反的数字,结果就会更短。预先感谢您的回复。

алгоритм
  • 2 2 个回答
  • 220 Views

2 个回答

  • Voted
  1. Best Answer
    Stanislav Volodarskiy
    2024-03-25T00:13:33Z2024-03-25T00:13:33Z

    令n为字符串s的长度。让我们检查一下它的所有真因数d : d|n, 1 ≤ d < n。

    对于每个除数,我们计算字符串的更改次数,使其具有子字符串周期d。为此,我们将对周期k、0 ≤ k < d中的位置进行排序。

    让我们考虑具有索引s k、 s d+k、 s 2d+k、 ...的符号。如果其中的零较多,那么将其替换为零更有利可图。如果是相反的情况,则将零替换为一。不管怎样,我们找到了使第k 个周期d数字变得漂亮的最小替换次数。为了让整个时期变得漂亮,你需要将所有等级的替换人数相加。

    在线性时间内,计算到美丽周期d为止的替换次数。为了解决整个问题,需要找到所有时期的最小替换次数。解决方案的复杂度为O(nσ 0 (n)),其中σ 0是除数 的数量。

    您可以使用线性搜索来搜索n 的约数。这本身并不是最有效的方法,但在这个问题的情况下,线性搜索以计算到美丽周期的距离为主。

    ESkri在评论中建议“仅将字符串拆分为简单数量的子字符串”。考虑d 1 , d 2 : d 1 |d 2 |n。那么对于周期d 1来说是美丽的弦对于周期d 2来说也是美丽的。也就是说,在搜索最小替换次数时,不需要考虑周期d 1 :沿d 1 的最少替换次数不小于沿d 2的最少替换次数。

    如果周期数m = d/n是合数,则可以展开为乘积m = m 1 m 2 , 1 < m 1 , m 2。那么dm 1是大于d的 n 的约数。因此,考虑周期的合数是没有意义的。

    新算法:让我们检查n 的所有p - 素因数。对于每个p,我们计算d = n / p,并计算替换次数。对于所有p,我们选择最少的替换数。问题已经解决了。复杂度O(nω(n)),其中ω(n)是质因数n的数量。它的增长速度比σ 0 (n)慢(并且比log(n)慢),这在时间上带来了显着的增益。

    • 1
  2. Boiler999
    2024-03-25T19:35:05Z2024-03-25T19:35:05Z

    请告诉我,上面Stanislav Volodarskiy提出的解决方案是否被“111000001”示例所破坏?

    据我了解,它会给出 3,类似于:“101010101”。或者您可以分两步完成,替换最后两个 0:“111000111”

    • 0

相关问题

  • Golang 中的堆栈实现

  • 二部图中的最大匹配

  • 求两个数的差模为 m 的倍数的算法

  • 如何将平面几何对象表示为矢量以应用于人工神经网络的输入?[关闭]

  • 如何正确执行矩形的 Delaunay 三角剖分?

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