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即这种颜色球的个数。)
显然不可能获得更大的分值。