题解:UVA11286 Conformity

· · 题解

思路:

把选择每个组合的人数存下来,记下选择同一个组合的最多的人数,把选择某个组合的人数等于选择同一个组合的最多的人数的人数加起来,这就是最终的答案。

代码:

#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define itn int
#define ull unsigned long long
int n;
int main(){
    while(cin>>n){
        if(n==0)break;
        unordered_map<string,int>mp;
        for(int i=1;i<=n;i++){
            int a[6];
            for(int i=1;i<=5;i++){
                cin>>a[i];
            }
            sort(a+1,a+6);
            string now="";
            for(int i=1;i<=5;i++){
                while(a[i]){
                    now+='0'+a[i]%10;
                    a[i]/=10;
                }
            }
            mp[now]++;
        }
        int maxx=0,ans=0;
        for(auto it=mp.begin();it!=mp.end();it++){
            if(maxx<(it->second)){
                maxx=it->second;ans=it->second;
            }
            else if(maxx==(it->second))ans+=it->second;
        }
        cout<<ans<<"\n";
    }
    return 0;
}