zoukankan      html  css  js  c++  java
  • hdu 4091 数学思维题贪心

    /*
    参看博客地址:http://blog.csdn.net/oceanlight/article/details/7857713
    重点是取完最优的后剩余的rest=n%lcm+lcm;中性价比小的数目num<lcm/性价比小的体积,因为如果大于的话
    肯定可以由性价比好的替换。
    然后枚举。从体积大的开始枚举次数少。
    注意64位
    */
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #define ll  __int64
    ll gcd(ll a,ll b) {
    if(b==0)return a;
    return gcd(b,a%b);
    }
    ll lcm(ll a,ll b) {
    return a/gcd(a,b)*b;
    }
    int main() {
       ll t,n,i,k=0,m,a,av,b,bv,aa,maxx,d;
      scanf("%I64d",&t);
      while(t--){
        scanf("%I64d%I64d%I64d%I64d%I64d",&n,&av,&a,&bv,&b);
        m=lcm(av,bv);
        aa=0;maxx=-1;
        if(n/m) {//如果可以lcm<=n
        if(a*bv>b*av)
               aa+=m/av*(n/m-1)*a;
               else
               aa+=m/bv*(n/m-1)*b;
        }
        if(n/m)//如果lcm<=n
        m+=n%m;
        else
            m=n;
        if(av<bv) {d=av;av=bv;bv=d;d=a;a=b;b=d;}//av。a记录体积大的
        for(i=0;i<=m/av;i++) {//从体积大的开始枚举
            if(maxx<aa+i*a+(m-i*av)/bv*b)
                maxx=aa+i*a+(m-i*av)/bv*b;
        }
        printf("Case #%I64d: %I64d
    ",++k,maxx);
      }
    return 0;}
    

  • 相关阅读:
    ssh session 共享
    python 快速开启http服务
    GCC 默认头文件搜索路径
    GCC 部分单元测试编译失败
    随机森林与GBDT
    DecisionTree
    SVM
    KDDCUP CTR预测比赛总结
    剑指offer-java
    搜狗搜索日志传输与分析
  • 原文地址:https://www.cnblogs.com/thefirstfeeling/p/4410562.html
Copyright © 2011-2022 走看看