ACM模版
描述
题解
一道模拟题,AC率之高,令人发指,但是并不是说明这道题很水,毕竟A它的人数基数不大。
这里根据题意,需要额外考虑的是当球的个数是1个或者2个时,结果分别是0和1,然后,就需要考虑球放的位置了,当然,这其实是一个烟雾弹,我们只需要每次都尽量往中间放,使两边的球色最杂,这时,就要考虑到每种颜色球的个数了,如果某种颜色球只有一个,那么它只能提供1有效分;如果是0个,那么一分也提供不了;但是如果超过1个,那么一定可以提供2有效分。 模拟每次操作,最后将总分输出即可……
代码
#include <iostream>
#include <cstring>
using namespace std;
const int MAXS =
55;
const int MAXC =
3;
char S[MAXS];
int RGB[MAXC];
int main(
int argc,
const char * argv[])
{
int T;
cin >> T;
while (T--)
{
memset(RGB,
0,
sizeof(RGB));
cin >> S;
int len = (
int)
strlen(S);
if (len ==
1)
{
cout <<
"0\n";
continue;
}
else if (len ==
2)
{
cout <<
"1\n";
continue;
}
int res =
1;
RGB[S[
0] ==
'R' ?
0 : S[
0] ==
'G' ?
1 :
2]++;
RGB[S[
1] ==
'R' ?
0 : S[
1] ==
'G' ?
1 :
2]++;
for (
int i =
2; i < len; i++)
{
for (
int j =
0; j <
3; j++)
{
res += RGB[j] >=
2 ?
2 : RGB[j];
}
RGB[S[i] ==
'R' ?
0 : S[i] ==
'G' ?
1 :
2]++;
}
cout << res <<
'\n';
}
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-1300316.html