ivy-jie

progress ...

C++博客 首页 新随笔 联系 聚合 管理
  9 Posts :: 41 Stories :: 6 Comments :: 0 Trackbacks
问题背景:
面对艰巨复杂的技术挑战,百度所崇尚的系统设计哲学是“简单可依赖”,而百度的工程师们正在互联网世界中实践着这种理念。这里正好有一个挑战,让作为百度之星的你小试牛刀:
在处理数以百亿计的网络信息的过程中,有一个很常见的问题:怎么样将一个集群上的信息以最低的成本传输到另外一个集群上?
• 数据源集群A有n台服务器,编号为1,2,…,n,i号服务器上待传输的数据量为Ai,单位是GB。
• 目的地集群B有m台服务器,编号为1,2,…,m,j号服务器上的空闲容量为Bj,单位为GB。
• A集群的i号服务器上的每GB数据对于B的集群的j号服务器收益为Vi,j,从A集群的i号服务器向B集群的j号服务器传输1GB数据的开销为Ci,j。
你的任务是在保证A中的所有数据传输完毕的前提下,性价比V/C尽量高。其中V为所有数据在B集群上的价值之和,C为总开销。换句话说,若A集群的i号服务器向B集群的j号服务器发送了Ti,j个GB的数据,则性价比定义为:
输入格式
第1行两个整数n,m(1<=n,m<=50),即集群A和B各自的服务器台数。
第2行包含n个不超过100的正整数A1,A2,…,An,即集群A中每台服务器的待传输数据量(单位:GB)。
第3行包含m个不超过100的正整数B1,B2,…,Bm,即集群B中每台服务器所能接受的最大数据量(单位:GB)。
第4~n+3行每行包含m个不超过100的非负整数Vi,j,表示集群A的i号服务器中每GB数据对于集群B中的j号服务器的价值。
第n+4~2n+3行每行包含m个不超过100的正整数Ci,j,表示集群A的i号服务器中每GB数据传输到集群B中的j号服务器所需要的开销。
输出格式
仅一行,为最大性价比。输出保留三位小数(四舍五入)。如果A的数据无法传输完毕,输出-1。
样例输入
22
12
21
110
75
61
32
样例输出
2.091
样例解释
一个方案是:
集群A的1号服务器把所有数据传输到集群B的1号服务器,价值11,开销6。
集群A的2号服务器把1GB数据传输到集群B的1号服务器,价值7,开销3,然后把剩下的1GB数据传输到集群B的2号服务器,价值5,开销2。
性价比:(11+7+5)/(6+3+2)=2.091
另一个方案是:
集群A的1号服务器把所有数据传输到集群B的2号服务器,价值0,开销1。
集群A的2号服务器把所有数据传输到集群B的1号服务器,价值14,开销6。
性价比:(0+14)/(1+6)=2。
第一种方案更优。
posted on 2009-05-20 09:34 ivy-jie 阅读(129) 评论(0)  编辑 收藏 引用 所属分类: arithmetic

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理