题目链接:http://hihocoder.com/problemset/problem/1052
题意:中文题面,就是修改其中几个字符,使得[0,k-1]和[n-k,n-1]的字符相同。
会发现一个问题就是,每n-k个字符都是相同的。
所以每次找n-k个字符,统计不同字符个数,把它们统一替换成出现次数最多的那个。
#include <bits/stdc++.h>
using namespace std; const int maxn = ;
int n, k;
char s[maxn];
int asc[]; int main() {
// freopen("in", "r", stdin);
int T;
scanf("%d", &T);
while(T--) {
scanf("%s", s);
scanf("%d", &k);
n = strlen(s);
int ret = ;
int p = n - k;
for(int i = ; i < p; i++) {
memset(asc, , sizeof(asc));
for(int j = i; j < n; j+=p) asc[s[j]]++;
int tmp = ;
for(int j = ; j < ; j++) {
tmp = max(tmp, asc[j]);
ret += asc[j];
}
ret -= tmp;
}
printf("%d\n", ret);
}
return ;
}