[HIHO1052]基因工程(找规律)

题目链接:http://hihocoder.com/problemset/problem/1052

题意:中文题面,就是修改其中几个字符,使得[0,k-1]和[n-k,n-1]的字符相同。

会发现一个问题就是,每n-k个字符都是相同的。

所以每次找n-k个字符,统计不同字符个数,把它们统一替换成出现次数最多的那个。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 const int maxn = 1010;
 5 int n, k;
 6 char s[maxn];
 7 int asc[257];
 8 
 9 int main() {
10     // freopen("in", "r", stdin);
11     int T;
12     scanf("%d", &T);
13     while(T--) {
14         scanf("%s", s);
15         scanf("%d", &k);
16         n = strlen(s);
17         int ret = 0;
18         int p = n - k;
19         for(int i = 0; i < p; i++) {
20             memset(asc, 0, sizeof(asc));
21             for(int j = i; j < n; j+=p) asc[s[j]]++;
22             int tmp = 0;
23             for(int j = 0; j < 256; j++) {
24                 tmp = max(tmp, asc[j]);
25                 ret += asc[j];
26             }
27             ret -= tmp;
28         }
29         printf("%d
", ret);
30     }
31     return 0;
32 }
原文地址:https://www.cnblogs.com/kirai/p/6197667.html