码迷,mamicode.com
首页 > 其他好文 > 详细

codeforces-1332C- K-Complete Word

时间:2020-04-04 00:07:26      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:字母   eof   define   force   href   style   char   mem   soft   

codeforces-1332C- K-Complete Word

传送门:https://codeforces.com/contest/1332/problem/C

题意:有一个字符串,你可以把某个字母换成任意一个字母,使得得到的新字符串是x个相同的长度为k的回文串

一开始没理解要把新字符串变成啥样,这样的话,回文串的话,把这个拆分后的子串对折,然后对齐,找一下每个位置出现的相同的字符的最多的个数,就是这个位置不需要动的个数,总数减一下就好

   21    7

wudixiaoxingxingheclp

拆分

   wudi xia

   oxin gxi

   nghe clp

   对折 对齐

  wudi
  aix
  oxin
  ixg
  nghe
  plc
  1211

 

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define ll long long
 4 char s[200009];
 5 int mp[30];
 6 int main()
 7 {
 8     int t;
 9     scanf("%d",&t);
10     while(t--)
11     {
12         int n,k;
13         scanf("%d%d",&n,&k);
14         scanf("%s",s+1);
15         int ans=0,maxx;
16         for(int j=1; j<=k/2; j++)
17         {
18             memset(mp,0,sizeof(mp));
19             maxx=-1;
20             for(int i=0; i<n/k; i++)
21             {
22                 mp[s[j+k*i]-a]++;
23                 mp[s[k-j+1+k*i]-a]++;
24                 if(mp[s[j+k*i]-a]>maxx) maxx=mp[s[j+k*i]-a];
25                 if(mp[s[k-j+1+k*i]-a]>maxx) maxx=mp[s[k-j+1+k*i]-a];
26             }
27             ans+=maxx;
28         }
29         if(k%2)
30         {
31             memset(mp,0,sizeof(mp));
32             int j=k/2+1,maxx=0;
33             for(int i=0; i<n/k; i++)
34             {
35                 mp[s[j+k*i]-a]++;
36                 if(mp[s[j+k*i]-a]>maxx) maxx=mp[s[j+k*i]-a];
37             }
38             ans+=maxx;
39         }
40         printf("%d\n",n-ans);
41     }
42     return 0;
43 }

 

codeforces-1332C- K-Complete Word

标签:字母   eof   define   force   href   style   char   mem   soft   

原文地址:https://www.cnblogs.com/YangKun-/p/12629624.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!