zoukankan      html  css  js  c++  java
  • 校内测试-奶酪

    题目 

     

    测试得分:  100

    主要算法 :  贪心

     

    题干:

      有四个权值分别为1,2,3,4的四个物品a,b,c,d各多少个,问相互之间组成正好组成权值为5的情况最多有多少种

    分析:

      方案1(背包) 

      方案2(贪心)

        贪心组合

        考虑顺序如下

          1.a与d组合

          2.b与c组合

          3.2*b与a组合(一般容易被忽略了)

          4.2*a与c组合

          5.3*a与b组合

          6.5*a

     代码

    #include<stdio.h>
    #include<stdlib.h>
    #define FORa(i,s,e) for(int i=s;i<=e;i++)
    #define FORs(i,s,e) for(int i=s;i>=e;i--)
    #define File(name) freopen(name".in","r",stdin);freopen(name".out","w",stdout);
    
    using namespace std;
    
    int a,b,c,d,ans;
    inline int min(int fa,int fb){return fa<fb?fa:fb;}
    int main()
    {
        File("cheese");
        scanf("%d%d%d%d",&a,&b,&c,&d);
        if(a>=d) ans+=d,a-=d;
        else ans+=a,a=0;
        if(b>=c) ans+=c,b-=c,c=0;
        else ans+=b,c-=b,b=0;
        if(a>0&&b>0)
        {
            if((b/2)>=a) ans+=a,b=b-2*a,a=0;
            else ans=ans+(b/2),a=a-(b/2),b%=2;
        }
        if(a>0&&c)
        {
            if((a/2)>=c) a=a-c*2,ans+=c,c=0;
            else c=c-(a/2),ans=ans+(a/2),a=a%2;
        }
        if(a>0)
        {
            if(a/3>=b) a=a-b*3,ans+=b,b=0;
            else ans=ans+(a/3),b=b-(a/3),a=a%3;
        }
        if(a>0) ans=ans+(a/5);
        printf("%d",ans);
        return 0;
    }

  • 相关阅读:
    坚持博客
    虚拟机CentOS7.2 1611 Minimal最小化安装后桥接固定ip
    Js 希望某链接只能点击一次
    ThinkPHP3.2 杂记
    Mysql 杂记
    Linux挂载Win共享文件夹 一
    Linux 监测系统资源
    Phpstrom 书签应用
    php默认有最大执行时间
    tp3.2中配置链接多个数据库
  • 原文地址:https://www.cnblogs.com/SeanOcean/p/11618081.html
Copyright © 2011-2022 走看看