51Nod-1418-放球游戏

    xiaoxiao2025-06-25  15

    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]; // 0R 1G B2 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
    最新回复(0)