USACO 项链断裂问题的错误答案 [已关闭]

2023-12-02

项链断了

您有一条由 N 个红色、白色或蓝色珠子 (3

            1 2                               1 2
        r b b r                           b r r b
      r         b                       b         b
     r           r                     b           r
    r             r                   w             r
   b               r                 w               w
  b                 b               r                 r
  b                 b               b                 b
  b                 b               r                 b
   r               r                 b               r
    b             r                   r             r
     b           r                     r           r
       r       r                         r       b
         r b r                             r r w
        Figure A                         Figure B
                    r red bead
                    b blue bead
                    w white bead

下文中考虑的第一和第二珠子已在图片中标记。

图A中的配置可以表示为一串b和r,其中b代表蓝色珠子,r代表红色珠子,如下: brbrrrbbbrrrrrbrrbbrbbbbrrrrb 。

假设您要在某个时候折断项链,将其平直放置,然后从一端收集相同颜色的珠子,直到到达不同颜色的珠子,并对另一端执行相同的操作(这可能不是与之前收集的珠子颜色相同)。

确定项链应该断裂的位置,以便收集最多数量的珠子。

Example

例如,对于图 A 中的项链,可以收集 8 颗珠子,断裂点位于珠子 9 和珠子 10 之间,或者位于珠子 24 和珠子 25 之间。

在一些项链中,包含白色珠子,如上图 B 所示。收集珠子时,遇到的白色珠子可以被处理为红色或蓝色,然后涂上所需的颜色。表示此配置的字符串将包含三个符号 r、b 和 w。

编写一个程序来确定可以从提供的项链中收集的最大珠子数量。

输入格式

第 1 行:N,珠子的数量 第2行:N个字符的字符串,每个字符为r、b或w

29 wwwbbrwrbrbrrbrbrwrwwrbwrwrrb

输出格式

单行包含可从提供的项链中收集的最大数量的珠子。

11

输出说明

考虑珠子的两个副本(有点像能够绕过两端)。 11 的字符串被标记。

            Two necklace copies joined here

wwwbbrwrbrbrrbrbrwrwwrbwrwrrb| wwwbbrwrbrbrrbrbrwrwwrbwrwrrb

                    ******|*****

                    rrrrrb|bbbbb  <-- assignments

                5xr .....#|#####  6xb

                    5+6 = 11 total

这是我遇到的 USACO 训练问题;我不断得到不正确的答案。 ...请不要告诉我这是愚蠢的;那没有帮助! :D


呵呵,我已经准备好了,但我没有费心去编码。无论如何,我的ideas是这个。

首先,您不需要存储所有珠子颜色(采用澳大利亚拼写!),您只需要存储连续有多少个相同颜色的珠子即可。因此对于:

RRBBBWRR

你只需要存储:

2R 3B 1W 2R

需要注意的一件事是,如果结尾珠子和起始珠子颜色相同,则必须考虑到这一点,所以

RRBBBRR

应存储为

4R 3B
or
3B 4R

一样。请注意,这样做的原因不是为了节省内存或其他任何东西,而是为了确保彼此相邻的珠子具有不同的颜色。我们通过组合相同颜色的珠子来做到这一点。

接下来,您将逐一浏览:
- 如果是红色,则将之后的所有值相加,直到找到蓝色,然后继续添加,直到找到另一个红色
- 如果是蓝色,则进行类似操作,但相反
- 如果它是白色的,那么下一个珠子将为红色或蓝色。除添加白色珠子的数量外,按上述操作

这里有些例子。 | 标记序列的开始和结束位置。

B|RB|R

我们找到一个R,然后是一个B,然后是另一个R。因此我们必须在B处停下来。

B|RWRB|R

我们找到了一个 R,然后找到了另一个 R,但我们还没有找到 B,所以我们继续。然后我们找到一个 B,然后又找到一个 R。这一次,既然我们找到了 B,我们就必须停下来。

B|RBW|R

我们找到一个 R,然后找到一个 B,但我们可以继续,因为下一个是 W,然后我们找到另一个 R,所以我们必须停止。在

B|WRBWB|R

我们数W,然后找到R。因此,我们继续直到找到B,然后继续,直到找到另一个R。这

B|WBRWR|B

是一个相反的情况。

现在您所要做的就是实施它:D。当然,这并没有考虑 R、B 和 W 中珠子的实际数量,而只是单个珠子序列的示例。您必须检查所有可能的序列。您还必须处理从后到头的序列。

最后,您可能会注意到这个算法有时很浪费,但 N 一秒钟内。如果有什么令人困惑的地方,请发表评论,因为我不是最好的解释者。快乐编码。

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

USACO 项链断裂问题的错误答案 [已关闭] 的相关文章

随机推荐

  • 批量替换文本文件中的文本(Linux/OSX 命令行)

    我有数百个文件 需要更改其部分文本 例如 我想将 http 的每个实例替换为 rtmp 这些文件具有 txt 扩展名 并且分布在多个文件夹和子文件夹中 我基本上正在寻找一种遍历每个文件夹 子文件夹和每个文件的方法 脚本 如果它在该文件中发现
  • 终止空闲的 mysql 连接

    我看到很多连接处于打开状态并且长时间处于空闲状态 例如 5 分钟 是否有任何解决方案可以在不重新启动 mysql 服务的情况下从服务器终止 关闭它 我正在维护旧版 PHP 系统 无法关闭为执行查询而建立的连接 我是否应该将 my cnf 文
  • UIImageView 动画RepeatCount 奇怪的行为

    所以我有这段代码可以无限次地对一组图像进行动画处理 但是一旦我尝试限制它的动画处理次数 它就不起作用了 甚至没有显示图像 有效的代码 animatedMap animationImages NSArray arrayWithObjects
  • 如何为图标内的文本着色

    我想问是否有一种方法可以为我将鼠标悬停在下面链接的图标上添加颜色 例如 如果我将鼠标悬停在文本上 如何才能仅将文本的颜色设置为 红色 我认为你必须结合照片编辑器来完成它 但我真的不知道如何做 感谢帮助 这是我尝试过的代码 section a
  • Mysql - 更新表中列具有空值的第一行

    我有一个包含 API 密钥列表的数据库 我需要将电子邮件和姓名与这些关联起来 我希望我的查询更新第一行中电子邮件为空的姓名和电子邮件 id key name email 1 3046GUGYi7ab NULL NULL 2 TXQzL33H
  • 在没有工具栏的新进程中启动 Internet Explorer 7

    我需要在 IE 中运行一个 Web 应用程序 因此它至少看起来与独立应用程序类似 我还需要能够在单独的会话中同时运行此 Web 应用程序的多个实例 为了实现这种外观 我希望始终在新进程中启动 Internet Explorer 7 而无需从
  • 使用 GCC 扩展 ASM 将内联 Intel ASM 转换为 AT&T ASM

    我花了 2 天的时间来研究 AT T 内联汇编 但是在转换这个汇编时遇到了一些问题 static char vendername 50 0 asm mov eax 0 cpuid mov dword ptr vendername ebx m
  • 如何使用 List 填充 DropDownList

    我有一个下拉列表 我需要用收集到的项目填充它List
  • 使用 SBT,如何指定除当前目录之外的备用项目根目录来运行主类?

    通常 SBT 会在以下位置查找构建文件 build sbt and project Build scala 是否可以指定备用项目根目录 以便我可以构建不在当前工作目录中的项目 我本质上正在寻找相当于mvn f path to pom xml
  • 无法修改 c:\windows 目录中的 .ini 文件

    我正在编写一个 C Windows 应用程序来更新旧应用程序的 ini 文件 我没有旧应用程序的源代码 因此无法对其进行修改 旧版应用程序将设置存储在 C Windows 的 INI 文件中 该位置无法更改 为了修改 INI 设置 我一直在
  • 减少mongodb中的值

    我正在创建一个购物应用程序 每个用户都有钱包 结构如下 userName Gandalf the Grey wallet 100 orderHistory 假设该用户购买了价值 50 件的商品 有没有更好的方法而不是用 findOne 获取
  • g++ 9 概念支持包括 ubuntu 18.04 上的

    我正在使用 g std c 2a fconcepts 来处理 g 的概念 但出现 include Concepts 标头错误 没有这样的文件或目录 有人可以帮我调试这个吗 这是我从 cppreference 复制的代码 include
  • 如何在嵌入式 React 应用程序的页面之间路由?

    背景 我正在尝试在嵌入式 Shopify 应用程序中创建一些链接 我明白我不能使用简单的 a 标签 因为 Shopify 嵌入式应用程序呈现为 iframe 我在本教程中取得了一些进展 但我陷入了困境 https theunlikelyde
  • Rails:在早期开发阶段改变迁移

    在 Rails 应用程序开发的早期阶段 我更喜欢直接修改迁移文件以将新列 字段 添加到我的表 模型 中 而不是堆积迁移来更改字段和 或进行较小的更改 这在 Rails 中可能吗 我运行以下命令来解决这个问题 将其保存在脚本中 然后就可以开始
  • Java时区:为什么需要Offset

    我的要求是这样的 我在数据库和时区中保存以毫秒为单位的时间 例如 以毫秒为单位的时间是1223123123232长时区是Asia Calcutta 我必须将其转换为Africa Asmara时区 long l 1223123123232l
  • 使用之前在 ECIES 中生成的私钥

    我想使用 ECIES 加密 解密数据 我为此使用 cryptopp AutoSeededRandomPool prng get private key generated ECIES
  • 检查图片是否加载?

    我正在寻找一种解决方案 检查所有图像在图像滑块 旋转器中使用之前是否已加载 我正在考虑一种解决方案 仅在加载主图像时显示图像的按钮或缩略图 以防止用户单击尚未完全下载的图像 文字来自 readyjQuery 文档可能有助于区分load an
  • 如何使 .php 扩展名不出现在网站上? [复制]

    这个问题在这里已经有答案了 我的网站使用 PHP 并且 php出现在我的网址中 我怎样才能删除这个 有很多方法可以实现这一点 但它们很大程度上取决于您选择的 Web 服务器 例如 如果您使用的是 Apache HTTPD 您可以使用 多视图
  • 如何从任意 pthread_t 获取线程 ID?

    我有一个 pthread t 我想更改它的 CPU 关联性 问题是我使用的是 glibc 2 3 2 它没有pthread setaffinity np 不过没关系 因为 pthread setaffinity np 本身就是一个包装器sc
  • USACO 项链断裂问题的错误答案 [已关闭]

    Closed 这个问题需要多问focused 目前不接受答案 项链断了 您有一条由 N 个红色 白色或蓝色珠子 3 1 2 1 2 r b b r b r r b r b b b r r b r r r w r b r