专栏文章

题解:P2911 [USACO08OCT] Bovine Bones G

P2911题解参与者 7已保存评论 11

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
11 条
当前快照
1 份
快照标识符
@mip5u77x
此快照首次捕获于
2025/12/03 06:39
3 个月前
此快照最后确认于
2025/12/03 06:39
3 个月前
查看原文

简化题意

给定三个数 s1,s2,s3s1,s2,s3,定义 1as1,1bs2,1cs31 \le a \le s1,1 \le b \le s2,1 \le c \le s3 ,求所有组合中最频繁的相加之和。

思路

由数据范围 2S1202 \le S_1 \le 202S2202 \le S_2 \le 202S3402 \le S_3 \le 40 很快便想到暴力枚举,对于相加的结果用一个桶数组累加次数。

注意事项

由数据范围得知累加和最多为 20+20+40=8020 + 20 + 40 = 80,故桶数组 tt 开到 80+5=8580 +5 = 85
桶数组 tt、最多次数 numnum 需要初始化为 0 或使其变为全局变量以实现全部初始化为 0。

代码

CPP
# include <bits/stdc++.h>
using namespace std;
int s1,s2,s3,t[85],ans,num;
int main(){
    cin>>s1>>s2>>s3;
    for (int u=1;u<=s1;u++)
        for (int v=1;v<=s2;v++)
            for (int w=1;w<=s3;w++)
                if (++t[u+v+w]>num)
                    num=t[u+v+w],ans=u+v+w;
    cout<<ans;
    return 0;
}

评论

11 条评论,欢迎与作者交流。

正在加载评论...