题解:P15606 [ICPC 2021 Jakarta R] Uniform Maker
Gardener2015 · · 题解
思路
看到这道题,我的第一反应是搜索,但是搜索的代码交上去后,迎接我的是:爆零。于是我意识到搜索是行不通的,我便开始想其他办法,我在苦思冥想一会儿之后,想出了一个好办法:既然题目要求用最少的字符数将这些单词都改成一样的,那何不枚举这些单词的每一位,然后将所有单词的每一位都替换成当前这一位出现频率最高的字母呢?想出这个方法之后就好办了,我们可以建立一个变量
代码
#include<bits/stdc++.h>
using namespace std;
int n,m,ans;
string s[101];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>s[i];//输入
for(int j=0;j<m;j++){//枚举每一位
int maxx=0;
map<char,int>a;
for(int i=1;i<=n;i++){//统计最大值
a[s[i][j]]++;
maxx=max(maxx,a[s[i][j]]);
}
ans+=n-maxx;
}
cout<<ans<<endl;//输出
return 0;
}
AC 记录。