div.1
T1
题意
有一个字符串 和一个数k
改变最少的字符使得字符串的前k个字符与后k个字符 相同
思路
使用并查集,将需要相同的字符并起来。再在每个集合中将其修改为出现次数最多的字符。
#include <bits/stdc++.h>
using namespace std;
int f[10000],vis[100010];
map<char,int>num;
class NewArenaPassword {
public:## 标题
int minChange( string oldPassword, int K );
};
int NewArenaPassword::minChange(string a, int k) {
int i,n,j,ans=0,x;
n=a.size();
memset(vis,0,sizeof(vis));
memset(f,-1,sizeof(f));
if(n==k) return 0;
for(i=0;i<k;i++) f[i+n-k]=i;
for(i=n;i>=0;i--)
{
if(vis[i]==0)
{
num.clear();
x=0;
int temp=0;
j=i;
while(j!=-1)
{
vis[j]=1;
x++;
num[a[j