码迷,mamicode.com
首页 > 其他好文 > 详细

[PA2014]Matryca

时间:2019-01-02 12:39:47      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:位置   i++   inline   code   pa2014   line   return   cst   include   

[PA2014]Matryca

题目大意:

有一堵长度为\(n(n\le10^6)\)的墙需要刷漆,你有一把长度为\(k\)的刷子。墙和刷子都被均匀划分成单位长度的小格,刷子的每一格中都沾有某种颜色的漆。你需要用这把刷子在墙上所有\(n-k+1\)个位置都刷一遍。如果墙上的某一格被不同颜色的漆刷过,那么它会呈现混合色。
现在墙上某些格子需要刷成给定的颜色,而另一些格子不不需要。求出能够完成任务的最短的刷子长度\(k\)

思路:

求出每个格子向左扩展的最远的长度\(l_i\),答案就是\(\max\{n-l_i+1\}\)

源代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
const int N=1e6+1;
char s[N];
int main() {
    scanf("%s",s);
    const int n=strlen(s);
    int ans=1;
    for(register int i=0,j=-1;i<n;i++) {
        if(s[i]=='*') continue;
        if(j!=-1&&s[i]!=s[j]) {
            ans=std::max(ans,n-i+j+1);
        }
        j=i;
    }
    printf("%d\n",ans);
    return 0;
}

[PA2014]Matryca

标签:位置   i++   inline   code   pa2014   line   return   cst   include   

原文地址:https://www.cnblogs.com/skylee03/p/10207253.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!