hdu4882ZCC Loves Codefires 贪心水题

//n个题目 , 完成第i个题目用时ti ,
//第i个题目扣的分数为segma(tj)*ki 1<=j<=i
//做题顺序可以调整
//ti越小越前、
//ki越大越前
//那么ti/ki越小越前
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std ;
const int maxn = 1e5+10 ;
typedef long long ll ;
struct node
{
    double k , t ;
    bool operator <(node tmp)const
    {
        return t/k < tmp.t/tmp.k ;
    }
}a[maxn];
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        for(int i = 1;i <= n;i++)
        scanf("%lf" , &a[i].t) ;
        for(int i = 1;i <= n;i++)
        scanf("%lf" , &a[i].k) ;
        sort(a+1 , a + 1 + n) ;
        ll ans = 0 ;
        ll sum = 0 ;
        for(int i = 1;i <= n;i++)
        {
            sum += (ll)a[i].t ;
            ans += (ll)sum*(ll)a[i].k ;
        }
        cout<<ans<<endl;
    }
    return 0  ;
}





你可能感兴趣的:(hdu4882ZCC Loves Codefires 贪心水题)