题目描述
设有n个程序{1,2,…,n}要存放在长度为L的磁带上。程序i存放在磁带上的长度是li,1<=i<=n。这n个程序的读取概率分别是p1,p2…pn,且i=1∑npi=1
。如果将这n个程序按i1,i2…in的次序存放,则读取程序所ir需的时间
tr=ck=1∑rpiklik
。这n个程序的平均读取时间为
i=1∑ntr
磁带最优存储问题要求确定这n 个程序在磁带上的一个存储次序,使平均读取时间达到最小。试设计一个解此问题的算法,并分析算法的正确性和计算复杂性。
编程任务: 对于给定的n个程序存放在磁带上的长度和读取概率,编程计算n个程序的最优存储方案。
输入格式
第一行是正整数n,表示文件个数。接下来的n行中,每行有2 个正整数a 和b,分别表示程序存放在磁带上的长度和读取概率。实际上第k个程序的读取概率
ak/i=1∑nai
。对所有输入均假定c=1。
输出格式
计算出最小平均读取时间(保留小数点后一位)。
样例
输入样例
5
71 872
46 452
9 265
73 120
35 85
输出样例
85.6