zoukankan      html  css  js  c++  java
  • Codeforces 392 B Blown Garland

    题意:输入是由连续的RYGB和字符!组成的字符串,R代表红灯,Y代表黄灯,G代表绿灯,B代表蓝灯。简而言之,就是给定的字符串保证了下标对4取余相同的灯颜色都相同,但是有的地方为‘!’代表这个灯坏了,然后分别输出坏了的红、蓝、黄、绿灯的数量。

    分析:因为下标对4取余相同的灯颜色都相同,所以确定了前四个灯的颜色,后面的灯都是前四个灯颜色的不断循环,两个map映射一下就可以了。

    #include<bits/stdc++.h>
    #define Min(a, b) ((a < b) ? a : b)
    #define Max(a, b) ((a < b) ? b : a)
    const int INT_INF = 0x3f3f3f3f;
    const int INT_M_INF = 0x7f7f7f7f;
    const int dr[] = {0, 0, -1, 1, -1, -1, 1, 1};
    const int dc[] = {-1, 1, 0, 0, -1, 1, -1, 1};
    const int MOD = 1e9 + 7;
    const double pi = acos(-1.0);
    const double eps = 1e-8;
    const int MAXN = 100 + 10;
    const int MAXT = 500 + 10;
    using namespace std;
    char s[MAXN];
    map<int, char> mp;
    map<char, int> ma;
    int a[5];
    int main(){
        ma['R'] = 0;
        ma['B'] = 1;
        ma['Y'] = 2;
        ma['G'] = 3;
        while(scanf("%s", s) == 1){
            mp.clear();
            memset(a, 0, sizeof a);
            int len = strlen(s);
            for(int i = 0; i < len; ++i){//确定前四个灯的颜色
                if(i % 4 == 0 && s[i] != '!'){
                    mp[0] = s[i];
                }
                if(i % 4 == 1 && s[i] != '!'){
                    mp[1] = s[i];
                }
                if(i % 4 == 2 && s[i] != '!'){
                    mp[2] = s[i];
                }
                if(i % 4 == 3 && s[i] != '!'){
                    mp[3] = s[i];
                }
            }
            for(int i = 0; i < len; ++i){
                if(s[i] == '!'){
                    int t = i % 4;
                    char c = mp[t];//每个坏了的灯分别是什么颜色,并统计个数
                    ++a[ma[c]];
                }
            }
            printf("%d %d %d %d\n", a[0], a[1], a[2], a[3]);
        }
        return 0;
    }
  • 相关阅读:
    JavaScript如何获取一个元素的样式信息
    Linux服务器命令行操作(小白专用)
    Linux云服务器搭建node环境
    C++ new和delete运算符简介
    C++中free()与delete的区别
    VS2017+Qt开发时打开命令调试窗口
    opencv4.2版本遇到CV_MINMAX未声明标识符
    CUDA 数据传输
    uchar 存为8位/16位图像(QImage)
    Qt Creator删除toolbar中多余的“分隔符”
  • 原文地址:https://www.cnblogs.com/tyty-Somnuspoppy/p/6322645.html
Copyright © 2011-2022 走看看