LittleElephantAndBalls

作者:何中天

关键字:贪心

题目简述

有RGB三种颜色的球。给你一个长度为n的颜色序列,你需要按顺序把球在桌子上摆放成一排,每一次可以摆放在任意位置,即排头,排尾或任意两球中间。每次摆放将获得分值为,这个球两边分别所含有的颜色种数的和。

例如,现在桌上的球为"GBBG",你要加入球"R"。如果你加在排头,则可以获得2分,如果加在"GBB"和"G"之间,则可以获得2+1=3分。 求可获得的最大分数。

数据范围

算法

我们可以在桌上设置一条虚拟界线,每次添加球只在界线两侧紧邻的位置添加。

比如当前情形为 ...A|B... 我们添加球C有两种方案,即 ...AC|B... 或 ...A|CB...

当其中有且只有一侧有与C同颜色的球时,我们将球加在另一侧。否则任意放置。

所以这样所获得的分值为,min(num[R], 2) + min(num[G], 2) + min(num[B], 2)。(num即这种颜色球的个数。)

显然不可能获得更大的分值。

results matching ""

    No results matching ""