前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >游游的水果大礼包(枚举)

游游的水果大礼包(枚举)

作者头像
二肥是只大懒蓝猫
发布2024-07-03 11:03:50
440
发布2024-07-03 11:03:50
举报
文章被收录于专栏:热爱C嘎嘎热爱C嘎嘎

题目链接:https://ac.nowcoder.com/acm/problem/255193

题解

题目解析

就拿第一个例子来看,当选择组成1个一号礼包和1个二号礼包时最大的价值是3元,而选择2个二号礼包时,最大的价值是4元,因此选择2个二号礼包。

算法原理

采用枚举的方法进行解题(这里使用贪心是不行的,在文末会解释为啥不行)。

代码编写

代码语言:javascript
复制
#include<iostream>
#include<algorithm>
using namespace std;
 
 
int main()
{
    long long  n = 0,m = 0,a = 0,b = 0;
    cin>>n>>m>>a>>b;
     
    long long ret = 0;
     
    for(long long x = 0;x<=min(n/2,m);++x)//枚举X的个数
    {
        long long y = min(n-2*x,(m-x)/2);//通过X来计算Y
         
        ret = max(ret,a*x+b*y);
    }
     
    std::cout<<ret<<std::endl;
     
     
    return 0;
}

贪心不可以的原因

这道题一开始会让人很容易就想到使用贪心,在苹果和桃子的数量允许的范围内,选择价值最大的那个礼包,最后再根据边界情况去选择一号礼包或者二号礼包,但是这里有个问题就是:

举个例子:n = 2 ,m = 100 ,a = 3,b = 2;

选择贪心算法去写,那么会选择1个一号礼包,此时的价值是3元,苹果的数量为0,结束。但是可以发现,如果选择2个二号礼包,最大的价值是4元。因此,贪心算法是不可行的。

枚举的题型总结

像本题,出现可以构成方程式,并且可以使用已有条件去解析方程式时,可以使用枚举,将其中的一个未知量枚举,使用该枚举出来的未知量进行计算另外一个未知量从而解出方程式,最终得到答案。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题解
    • 题目解析
      • 算法原理
        • 代码编写
          • 贪心不可以的原因
          • 枚举的题型总结
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档