日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

K-Complete Word CodeForces - 1332C(贪心)

發布時間:2023/12/15 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 K-Complete Word CodeForces - 1332C(贪心) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Word s of length n is called k-complete if

s is a palindrome, i.e. si=sn+1?i for all 1≤i≤n;
s has a period of k, i.e. si=sk+i for all 1≤i≤n?k.
For example, “abaaba” is a 3-complete word, while “abccba” is not.

Bob is given a word s of length n consisting of only lowercase Latin letters and an integer k, such that n is divisible by k. He wants to convert s to any k-complete word.

To do this Bob can choose some i (1≤i≤n) and replace the letter at position i with some other lowercase Latin letter.

So now Bob wants to know the minimum number of letters he has to replace to convert s to any k-complete word.

Note that Bob can do zero changes if the word s is already k-complete.

You are required to answer t test cases independently.

Input
The first line contains a single integer t (1≤t≤105) — the number of test cases.

The first line of each test case contains two integers n and k (1≤k<n≤2?105, n is divisible by k).

The second line of each test case contains a word s of length n.

It is guaranteed that word s only contains lowercase Latin letters. And it is guaranteed that the sum of n over all test cases will not exceed 2?105.

Output
For each test case, output one integer, representing the minimum number of characters he has to replace to convert s to any k-complete word.

Example
Input
4
6 2
abaaba
6 3
abaaba
36 9
hippopotomonstrosesquippedaliophobia
21 7
wudixiaoxingxingheclp
Output
2
0
23
16
Note
In the first test case, one optimal solution is aaaaaa.

In the second test case, the given word itself is k-complete.
唉,挺簡單的一道題目給整復雜了。。
思路:根據題目要求,我們可以推斷出,給定的字符串,每k位就是一個回文字符串。這樣的話,我們就考慮這k位的字符串。對于這k位的回文字符串,我們要考慮對稱的位置字符的數量,例如第一個樣例來說,abaaba,第一位a有2個,b有1個;第二位a有2個,b有1個。因為第一位和第二位是對稱的,所以我們要合起來考慮,a一共有4個,b一共有2個,a的數量更多,因此這些位置要替換成a。思路就是這樣,實現的方式有很多。但是不要盲目的memset,因為有可能超時。
代碼如下:

#include<bits/stdc++.h> #define ll long long using namespace std;const int maxx=2e5+100; int cnt[maxx][27]; string s; int n,k;inline void init() {for(int i=0;i<k;i++) memset(cnt[i],0,sizeof(cnt[i])); } inline void dfs(int u,int flag) {if(u>=n) return ;cnt[flag][s[u]-'a']++;dfs(u+k,flag); } int main() {int t;scanf("%d",&t);while(t--){scanf("%d%d",&n,&k);cin>>s;init();for(int i=0;i<k;i++) dfs(i,i);int l=0,r=k-1;int ans=0,_max=0;while(l<=r)//這樣寫就不用把奇數的情況單獨拿出來考慮了。{if(l==r){_max=0;for(int i=0;i<26;i++) _max=max(_max,cnt[l][i]);ans+=_max;break;}else{_max=0;for(int i=0;i<26;i++) _max=max(_max,cnt[l][i]+cnt[r][i]);ans+=_max;l++,r--;}}cout<<n-ans<<endl;}return 0; }

努力加油a啊,(o)/~

總結

以上是生活随笔為你收集整理的K-Complete Word CodeForces - 1332C(贪心)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。