51Nod-1418-放球游戏

来源:互联网 发布:淘宝推广工具有哪些 编辑:程序博客网 时间:2024/05/21 17:23

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 B2int 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;}
0 0
原创粉丝点击