标签:位置 i++ inline code pa2014 line return cst include
有一堵长度为\(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;
}
标签:位置 i++ inline code pa2014 line return cst include
原文地址:https://www.cnblogs.com/skylee03/p/10207253.html