在一款游戏中,玩家需要依次释放三种元素技能:火(F)、水(W)、土(E)。每个技能的基础能量值分别为:F 获得 1 点,W 获得 2 点,E 获得 3 点。技能释放时若与之前连续释放的相同技能产生共鸣,还会获得额外的共鸣奖励。具体而言,对于序列中的第 i 个技能,如果它与紧邻的前一个技能相同,则奖励 1 点;如果与前两个技能都相同,则再奖励 1 点,依此类推。换言之,设第 i 个技能之前有 k 个连续相同的技能,则它额外获得 k 点奖励。总能量为所有技能的基础能量与共鸣奖励之和。请计算给定技能序列的总能量。
由于string的长度只有1e4,可以直接暴力做,n^2也只有1e8,小常数1s内可以跑完。直接往前遍历有几个字符和它相同即可。
或者基于简单dp的方式,每个位置保存它前面与它相等且串联的字符数量,每个字符只需要看其是否与上一个字符相等即可,相等则加1,否则置为0。
在一款游戏中,玩家需要依次释放三种颜色的能量球:红色(r)、绿色(g)、蓝色(b)。每个能量球的基础能量值分别为:红色 1 点,绿色 2 点,蓝色 3 点。释放时若与之前连续释放的相同颜色的能量球产生共鸣,还会获得额外的共鸣奖励。具体而言,对于序列中的第 i 个能量球(i 从 1 开始),如果它与紧邻的前一个球颜色相同,则奖励 1 点;如果与前两个球颜色都相同,则再奖励 1 点,依此类推。换言之,设第 i 个球之前有 k 个连续相同颜色的球,则它额外获得 k 点奖励。总能量为所有能量球的基础能量与共鸣奖励之和。请计算给定能量球序列的总能量。
约束条件:字符串的长度 n 满足 1≤n≤10000。
输入包含一行,一个仅由字符 r、g、b 组成的字符串,长度 n 满足 1≤n≤10000。
输出一个整数,表示最终计算得到的总能量。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册