zoukankan      html  css  js  c++  java
  • 经典入门_贪心算法

    贪心是一种总是选择“当前最好选择”,而不从整体上去把握的思想,往往这种“贪心”的策略能得到接近最优的结果,甚至某些情况下就是最优解。

    例2.11 FatMouse'Trade(1433)

    题目大意如下:有n元钱,m种物品;每种物品有j磅,总价值f元,可以使用0到f的任意价格购买相应磅的物品,例如使用0.3f元,可以购买0.3j磅物品。要求输出用m元钱最多能买到多少磅物品。

    样例输入:
    5 3
    7 2
    4 3
    5 2
    20 3
    25 18
    24 15
    15 10
    -1 -1
    样例输出:
    13.333
    31.500
    #include<stdio.h>
    #include<algorithm>
    using namespace std;
    struct goods{
        double j;
        double f;
        double s;//性价比 
        bool operator <(const goods &A)const{
            return s>A.s;
        }
    }buf[1000];
    int main(){
        int n,m;
        while(scanf("%d%d",&n,&m)!=EOF){
            if(n==-1&&m==-1) break;
            for(int i=1;i<=m;i++){
                scanf("%lf%lf",&buf[i].j,&buf[i].f);
                buf[i].s=buf[i].j/buf[i].f;//价格除以钱 
            }
            sort(buf+1,buf+1+m);
            double res=0;//累计重量 
            double quo=0;//
            for(int i=1;i<=m;i++){
                if(n>=buf[i].f){
                    res+=buf[i].j;
                    n-=buf[i].f;
                }
                else{
                    quo=n/buf[i].f;
                    res+=quo*buf[i].j;
                    break; 
                }
            }
            printf("%.3lf
    ",res);//保留三位小数 
        }
        return 0;
    }

    例2.12 今年暑假不AC (1434)

    这道题的贪心策略并不是很明显,但有了思路也很简单,就懒得敲了,直接po一个链接:http://blog.csdn.net/lecholin/article/details/65979763

  • 相关阅读:
    优化eclipse
    Servlet与jsp间的传值问题
    servlet & javabean
    Java数据类型
    CentOS 7 安装tomcat
    Nginx配置详解
    PHP文件缓存实现
    lnmp编译安装
    Php安全规范
    php编码规范
  • 原文地址:https://www.cnblogs.com/exciting/p/8411987.html
Copyright © 2011-2022 走看看