• 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;
}