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