题解:P15606 [ICPC 2021 Jakarta R] Uniform Maker
思路
题目要求把
最终所有字符串相同,意味着每个位置上的字符在所有字符串中都是一样的。所以对于每个位置
每个位置独立,总修改次数就是每个位置上的修改次数相加。对于位置
代码:
#include <bits/stdc++.h>
using namespace std;
int n,m,ans=1e9,cnt[26];
string s[105];
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
for(int i=1;i<=n;i++) cin >> s[i];
for(int col=1;col<=m;col++){
memset(cnt,0,sizeof cnt);
for(int i=1;i<=n;i++) cnt[s[i][col-1]-'a']++;
int mx=0;
for(int i=0;i<26;i++) if(cnt[i]>mx) mx=cnt[i];
int now=n-mx;
for(int j=1;j<=m;j++){
if(j==col) continue;
memset(cnt,0,sizeof cnt);
for(int i=1;i<=n;i++) cnt[s[i][j-1]-'a']++;
mx=0;
for(int i=0;i<26;i++) if(cnt[i]>mx) mx=cnt[i];
now+=n-mx;
}
ans=min(ans,now);
}
cout << ans;
return 0;
}