#include<stdio.h>//磁带最优存储问题
#define N 100
struct pro
{
double length;
double p;
};
void minLen(struct pro pros[],int n)
{
double sum[N],t;
double s=0,minL=0;
int j;
int i;
for(i=0;i<n;i++)
{
s+=pros[i].p;
}
for(i=0;i<n;i++)
{
pros[i].p=pros[i].p/s;
pros[i].length=pros[i].p*pros[i].length;
}
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
{
if(pros[j].length>pros[j+1].length)
{
t=pros[j].length;
pros[j].length=pros[j+1].length;
pros[j+1].length=t;
}
}
}
t=pros[0].length;
sum[0]=t;
minL+=sum[0];
for(i=1;i<n;i++)
{
t+=pros[i].length;
sum[i]=t;
minL+=sum[i];
}
printf("%lf",minL);
}
int main()
{
struct pro pros[N];
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%lf %lf",&pros[i].length,&pros[i].p);
}
minLen(pros,n);
return 0;
}
/*5
71 872
46 452
9 265
73 120
35 85
输出:85.6193*/
磁带最优存储问题-贪心算法
最新推荐文章于 2021-02-27 22:04:43 发布