由于操作是整行翻转,发现对于不同的两列,只要存在一行的元素互不相同,那么不管怎么操作都永远无法让这两列的元素同时均为
。由此得出结论,只有完全相同的两列才有可能同时满足要求,因此要找数量最多的相同列。
#include <bits/stdc++.h>
using namespace std;
void solve(){
int n, m;
cin >> n >> m;
vector<string> s(m + 5);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
char c;
cin >> c;
s[j] += c;
}
}
map<string, int> mp;
int mx = 0;
for (int i = 1; i <= m; i++) {
mp[s[i]]++;
mx = max(mp[s[i]], mx);
}
cout << mx;
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int _T = 1;
// cin >> _T;
while (_T--){
solve();
}
return 0;
}