bzoj 3725: PA2014 Final Matryca 乱搞

来源:互联网 发布:最好背单词软件 编辑:程序博客网 时间:2024/06/05 03:40

题意

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

分析

妈呀一开始看错题目了,没看到每一个位置都要刷。我就说我怎么连题解都看不懂。。。
设最近的两个不同色位置的距离为mn,那么答案显然为n-mn+1。

代码

#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;int n;char s[1000005];int main(){    scanf("%s",s+1);n=strlen(s+1);    int ls=0,mn=n;char lsc;    for (int i=1;i<=n;i++)        if (s[i]!='*')        {            if (ls&&lsc!=s[i]) mn=min(mn,i-ls);            ls=i;lsc=s[i];        }    printf("%d",n-mn+1);    return 0;}
原创粉丝点击