zoukankan      html  css  js  c++  java
  • POJ 3262 Protecting the Flowers 【贪心】

    题意:
    有n个牛在FJ的花园乱吃。
    所以FJ要赶他们回牛棚。
    每个牛在被赶走之前每秒吃Di个花朵。赶它回去FJ来回要花的总时间是Ti×2。在被赶走的过程中,被赶走的牛就不能乱吃

    思路:

    先赶走破坏力大的牛
    假设序列都由二元组组成,二元组是由T和D组成,那么对一个序列有相邻的两头牛是这样的
    ..........(a, b) ,(c, d)....................
    如果(a,b)和(c,d)交换位置了
    变成新序列
    ..........(c,d),(a,b).......................
    假设在这之前FJ已经花了x时间了。
    那么赶完这两头牛的损失的量就分别为
    x*b + (x + a ) * d
    x*d +(x + c) * b
    二者做差
    得到ad - bc
    若ad < bc 则有第一个序列优于第二个。

    //bool cmp(cow x, cow y)
    //{
    //    return x.t * y.d < x.d * y.t;
    //}
    #include <iostream>
    #include <cstdio>
    #include <queue>
    #include <math.h>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    
    struct cow
    {
        double t,d;
    }a[2000001];
    bool cmp(cow x,cow y)
    {
        return x.d/x.t > y.d/y.t;
    }
    int main()
    {
        int n;
        scanf("%d", &n);
        for(int i=0;i<n;i++)
            scanf("%lf%lf",&a[i].t,&a[i].d);
        sort(a,a+n,cmp);
        long long sum=0,s=0;
        for(int i=0;i<n;i++)
        {
            sum+=2*s*a[i].d;
            s+=a[i].t;
        }
        cout<<sum<<endl;
        return 0;
    }
    
  • 相关阅读:
    postman的本地安装教程
    06-Hibernate中的持久化类
    05-Hibernate的核心API及使用c3p0连接池
    04-Hibernate的常见配置
    03-Hibernate的入门
    02-Hibernate的日志记录
    01-Hibernate框架的概述
    15-struts2 提供的异常处理
    14-struts2的表单标签
    13-struts2中json插件使用
  • 原文地址:https://www.cnblogs.com/demian/p/7296631.html
Copyright © 2011-2022 走看看