码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 4882 /按排顺序使序列最优问题

时间:2014-07-28 00:12:30      阅读:438      评论:0      收藏:0      [点我收藏+]

标签:blog   os   io   2014   for   问题   时间   ios   


题意: 安排一个序列,该序列每个数有俩个属性:t[i]、val[i]。计算一个点的价值:到目前为止的总时间*val[i].,,求  安排顺序后使得 计算所有点的价值之和最小。

思路:对于任意相邻俩项,考虑他俩顺序对总体的影响:前面的和后面的必然不变,设 他俩为 i,j.  俩种情况作差得:t/val小,就小。所以可以按之排序,则总体最小。

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct kinds
{
    int t;
    int val;
    double bi;
};
bool my(kinds a,kinds b)
{
    return a.bi<b.bi;
}
int main()
{
    int n;
    while(cin>>n)
    {
        vector<kinds>v(n);
        for(int i=0;i<n;i++)
            cin>>v[i].t;
        for(int i=0;i<n;i++)
          {
            cin>>v[i].val;
            v[i].bi=v[i].t*1.0/v[i].val;
          }
        sort(v.begin(),v.end(),my);
        long long sum=0;
        long long sumt=0;
        for(int i=0;i<n;i++)
        {
          sumt+=v[i].t;
          sum+=v[i].val*sumt;
        }
        cout<<sum<<endl;
    }
    return 0;
}



hdu 4882 /按排顺序使序列最优问题,布布扣,bubuko.com

hdu 4882 /按排顺序使序列最优问题

标签:blog   os   io   2014   for   问题   时间   ios   

原文地址:http://blog.csdn.net/u011498819/article/details/38171945

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!