-
D2. RGB Substring
//对于循环节较少的串
//可以枚举每个字母作为循环节开头
//修改串与模式串匹配的题中
//可以枚举每个位置对修改的贡献值
//然后计蒜每种循环节中,每个位置对修改次数的贡献值
//做一个前缀和,然后再枚举区间
int n,k;
char s[MAXN];
int a[MAXN];//
char tmp[]={'R','G','B'};
int main()
{
int t;rd(t);
while(t--)
{
rd(n);rd(k);
scanf("%s",s);
int ans=k;
for(int i=0;i<3;i++)
{
for(int j=0;j<n;j++)
{
if(s[j]!=tmp[(i+j)%3]) a[j]=1;
else a[j]=0;
if(j>=1) a[j]+=a[j-1];
}
for(int l=k-1;l<n;l++)
ans=min(ans,a[l]-a[l-k]);
}
printf("%d\n",ans);
}
//stop;
} 
京公网安备 11010502036488号