设有 n 个程序{1,2,…, n }要存放在长度为 L 的磁带上。程序 i 存放在磁带上的长度是li ,1≤ li ≤ n 。这 n 个程序的读取概率分别是
p1 , p2 , …… , pn , 且 。如果将这 n 个程序按i1 ,i2 ,…… , in 的次序存放,则读取程序ir 所需的时间
。这 n 个程序的平均读取时间为
。磁带最优存储问题要求确定这 n 个程序在磁带上的一个存储次序, 使平均读取时间达到最小。
对于给定的 n 个程序存放在磁带上的长度和读取概率, 试设计一个解此问题的算法, 计算 n 个程序的最优存储方案,并分析算法的正确性和计算复杂性。
输入数据第一行是正整数 n,表示文件个数。接下来的 n 行中,每行有 2 个正整数 a 和 b,分别表示程序存放在磁带上的长度和读取概率。实际上第 k 个程序的读取概率。对所有输入均假定 c=1。
将计算出的最小平均读取时间输出。
5 71 872 46 452 9 265 73 120 35 85
85.6193