【发布时间】:2011-03-13 04:51:49
【问题描述】:
破碎的项链
你有一条项链,由 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代表红色珠子,如下:brbrrrbbbrrrrrbrrbbrbbbbbrrrrb。
假设你要在某个时候折断项链,把它平放,然后从一端收集相同颜色的珠子,直到你找到一个不同颜色的珠子,然后对另一端做同样的事情(即可能与之前收集的珠子颜色不同)。
确定应该打破项链的点,以便收集最多数量的珠子。
例子
例如,对于图 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
wwwbbrwrbrbrrbrbrbrwrwwrbwrwrrb | wwwbbrwrbrbrrbrbrwrwwrbwrwrrb
******|*****
rrrrrb|bbbbb <-- assignments
5xr .....#|##### 6xb
5+6 = 11 total
这是我遇到的 USACO 培训问题;我不断得到不正确的答案。 ...请不要告诉我这是愚蠢或愚蠢的;这没有帮助! :D
【问题讨论】:
-
看起来很简单,简单的天真是计算游程长度,然后找到最高的游程总和。不要忘记考虑只有一种颜色的项链。我记得为 USACO 这样做是比较容易的问题之一
-
只要连续选择两个最大的对就足够了(值是颜色出现的次数),作为介绍,w 就足够做简单的额外工作了,我想你可以想出这个。跨度>
-
我想知道这算作家庭作业吗?