zoukankan      html  css  js  c++  java
  • BZOJ 3725

     

    Description

    有一堵长度为n的墙需要刷漆,你有一把长度为k的刷子。墙和刷子都被均匀划分成单位长度的小格,刷子的每一格中都沾有某种颜色(纯色)的漆。你需要用这把刷子在墙上每一个可能的位置(只要刷子不超出墙,且对准格子;共有n-k+1个位置)都刷一遍。如果墙上的某一格被不同颜色的漆刷过,那么它会呈现混合色。

    现在墙上某些格子需要刷成给定的颜色。求出能够完成任务的最短的刷子长度k。

    Input

    输入为一个长度为n(1<=n<=1000000)的字符串,由大写字母和星号组成。大写字母表示某种纯色,星号表示此位置颜色不作要求。

    Output

    输出最小的k。

    Sample Input

    A*B*B*A

    Sample Output

    6

    HINT

    解释:

    刷子的颜色为ABBBBA。

    Source

    鸣谢Jcvb

    题解(夏令营写的):

    AC代码:

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    const int N=1e6+10;
    char ch[N],last='*';
    int main(){
        scanf("%s",ch+1);int len=strlen(ch+1),dis=len,pre(1);
        for(int i=1;i<=len;i++){
            if(ch[i]!='*'){
                if(ch[i]!=last){
                    if(last!='*'&&i-pre<=dis){
                        dis=i-pre;
                    }
                    last=ch[i];
                }
                pre=i;
            }
        }
        printf("%d
    ",len-dis+1);
        return 0;
    }
  • 相关阅读:
    HDU 3547 DIY Cube
    POJ 2975 Nim
    POJ 1678 I Love this Game!
    POJ 2234 Matches Game
    POJ 3537 Crosses and Crosses
    POJ 3710 Christmas Game
    POJ 1704 Georgia and Bob
    HDU 3923 Invoker
    POJ 2154 Color
    PLM更新自定义CLASS
  • 原文地址:https://www.cnblogs.com/shenben/p/5677171.html
Copyright © 2011-2022 走看看