题解:P2911 [USACO08OCT] Bovine Bones G

· · 题解

P2911

思路:

由题面得知,本题要求三个数的和组成的数列中的最小众数

往下看数据范围,因为 2 \le S1 \le 202 \le S2 \le 202 \le S3 \le 40,而 20 \times 20 \times 40 = 16000,这意味着暴力不会超时。

CODE:

明确思路后代码其实很简洁。

#include<bits/stdc++.h>
using namespace std;
int a,b,c,x[100],maxn,ans=INT_MAX;
int main(){
    //此处可自行添加快读等提速代码。
    cin>>a>>b>>c;
    for(int i=1;i<=a;i++){//依次枚举。
        for(int j=1;j<=b;j++){
            for(int k=1;k<=c;k++){
                int s=i+j+k;//求和。
                x[s]++;//和为s的组合出现次数。
                if(x[s]==maxn){//最小的众数。
                    ans=min(ans,s);
                }if(x[s]>maxn){//次数最大。
                    maxn=x[s];
                    ans=s;
                }
            }
        }
    }
    cout<<ans;//输出出现次数最多的最小的数。
    return 0;//好习惯。
}

有疑问记得私信哦!