zoukankan      html  css  js  c++  java
  • POJ3262贪心

    题意:FJ去砍树,然后和平时一样留了 N (2 ≤ N ≤ 100,000)头牛吃草。当他回来的时候,他发现奶牛们正在津津有味地吃着FJ种的美丽的花!为了减少后续伤害,FJ决定立即采取行动:运输每头牛回到自己的牛棚。 每只奶牛i在离牛棚Ti(1 ≤ Ti ≤ 2,000,000) 分钟路程的地方,每分钟吃掉Di(1 ≤ Di ≤ 100)朵花。FJ只能一次带回一头奶牛。弄回一头奶牛i来回需要2*Ti分钟。从带回i号奶牛开始,i号奶牛就不会吃花。请你找出被毁坏的花的最小数量 。

    题解:按照排序贪心的做法,通过a.D*b.T>b.D*a.T进行排序,找到每一个环节最小的破坏数,将其累加,便是最优解。

    贪心证明:


    #include<iostream>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    typedef long long ll;
    struct node{
        int D;
        int T;
    }p[100005];
    bool cmp(node a,node b)
    {
        return a.D*b.T>b.D*a.T;
    }
    int main(void)
    {
        int n;cin>>n;
        for(int i=1;i<=n;i++)
            cin>>p[i].T>>p[i].D;
        sort(p+1,p+1+n,cmp);
        ll ans=0,s_time=0;
        for(int i=1;i<=n;i++)
        {
            ans+=s_time*p[i].D;
            s_time+=(2*p[i].T);
        }
        cout<<ans<<endl;
    }
  • 相关阅读:
    [HDU]1086You can Solve a Geometry Problem too
    [HDU]2161Primes
    [HDU]2098分拆素数和
    [HDU]1431素数回文
    [HDU]1527取石子游戏
    [HDU]2092整数解
    [HDU]1405The Last Practice
    [HDU]2565放大的X
    [HDU]1723Distribute Message
    [HDU]1208Pascal's Travels
  • 原文地址:https://www.cnblogs.com/ZJNU-huyh/p/13224451.html
Copyright © 2011-2022 走看看