• 牛客网20181104 TI 染色


    链接:https://ac.nowcoder.com/acm/contest/176/A
    来源:牛客网

    fizzydavid和leo有n个方格排成一排,每个方格初始是白色。fizzydavid有红色染料,leo有蓝色染料。他们共进行了m次操作,在每次操作中,fizzydavid或者leo会选择若干个(可以是零个)连续相邻的方格并用自己的染料给这些格子染色。当一个格子被染成某个颜色时,这种染料会覆盖之前这个格子上的颜色。

    现在你并不知道他们每次操作选择了哪些格子,只知道每次操作是谁进行的,以及最终这n个方格的颜色。你需要判断是否存在某种选择格子的方式使得操作完之后n个方格的颜色与给定的相同。你还发现,n个格子最终都不是白色。


    首先我们求出有多少个断开的块 (左右两端的颜色与其不同)

    然后是一个贪心思想

    讲操作从后往前,每次去掉颜色色会少一个碎块

    然后特例就是只剩两个不同颜色的时候

    特判一下即可

    下面给出代码:

    #include<iostream>
    #include<cmath>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<string>
    #include<algorithm>
    using namespace std;
    inline int rd(){
       int x=0,f=1;
       char ch=getchar();
       for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-1;
       for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';
       return x*f;
    }
    inline void write(int x){
        if(x<0) putchar('-'),x=-x;
        if(x>9) write(x/10);
        putchar(x%10+'0');
        return ;
    }
    int T;
    char ch[100006];
    char s[100006];
    int main(){
        T=rd();
        while(T--){
            scanf("%s%s",ch+1,s+1);
            int x=0,y=0;
            int h1=strlen(ch+1),h2=strlen(s+1);
            for(int i=1;i<=h1;){
                if(ch[i]=='R'){
                    x++;
                    while(ch[i]=='R') i++;
                }
                else{
                    y++;
                    while(ch[i]=='B') i++;
                }
            }
            for(int i=h2;i>=1;i--){
                if(s[i]=='F'){
                    x--;
                    if(y<=1) continue;
                    y--;
                }
                else{
                    y--;
                    if(x<=1) continue;
                    x--;
                }
            }
            if(x<=0&&y<=0) printf("Yes
    ");
            else printf("No
    ");
        }
        return 0;
    }
  • 相关阅读:
    Linux网络编程头文件汇总
    CentOS7.6 源码安装 libxml2-2.8.0
    CentOS7.6 源码安装 glib-2.30.3
    CentOS7.6 源码安装 libevent-2.1.8-stable
    CentOS7.6 源码安装 zeromq-4.2.5
    CentOS7.6 源码安装 go1.13.12
    CentOS7.6 源码安装 openssl-1.1.1c
    CentOS7.6 源码安装 Python-3.7.4
    Go学习笔记:Linux下安装Go语言
    Go学习笔记:初识Go语言
  • 原文地址:https://www.cnblogs.com/WWHHTT/p/9911542.html
Copyright © 2020-2023  润新知