/*如果要一个物体的多种属性,最好用结构体,不要用二维数组或者多维数组。用多维数组进行关键字排序很不稳定 */
/*给每个设备的所有价格排序,每个设备选取恰好比已知带宽大的价格(这个时候的比例最大) 循环每个设备就得到所有价格综合 然后得到该带宽下的B/P
比较所有带宽的B/P 选取最大的就是所求的*/
#include <stdlib.h>
#include <stdio.h>
#define true 1
#define false 0
typedef struct
{ int b, p;
}SYS;
SYS sys[][];
int cmp(const void * a, const void * b)
{
SYS * c = (SYS *) a;
SYS * d = (SYS *) b;
return c -> p - d -> p;
} int main()
{
int n,i,j,sum,k,could,t;
int m[], bc;
int b[];/*记录每种带宽*/
double max,temp;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
bc = ;
for( i = ; i < n; i++)
{
scanf("%d",&m[i]);
for( j = ; j < m[i]; j++)
{
scanf("%d%d",&sys[i][j].b,&sys[i][j].p) ;
b[bc++] = sys[i][j].b;/*记录所有带宽的值,然后排序 */
}
qsort(sys[i], m[i], sizeof(SYS), cmp);
}
max = ;
for( k = ; k < bc; k++)/*循环每个带宽 */
{
sum = ;
could = true;
for(i = ; i < n; i++)/*每个设备 */
{
for(j = ; j < m[i]; j++)/*每个具体情况 */
if(sys[i][j].b >= b[k])/*从小到大,贪心 如果刚好比他大 */
{
sum += sys[i][j].p;/*就记录这个设备的价格,然后跳到下一个设备 */
break;
}
if(j == m[i])/*如果是循环到最后就证明是这个带宽是最大的就不用处理 */
{
could = false;
break;
}
}
if(could)/*如果这个带宽是可行的 */
{
temp = 1.0*b[k]/ sum;
max = max > temp ? max : temp;
}
}
printf("%.3lf\n",max); }
return ;
}
/*
1
3
2 120 80 155 40
3 100 25 150 35 80 25
2 100 100 120 110
*/

最新文章

  1. eclipse创建web项目
  2. POJ3663
  3. CSAPP:Binary Bomb
  4. (转载)ANDROID STRINGS.XML 中的特殊字符转义
  5. angular : ngModel 内部流程
  6. 新手向:Java基础知识
  7. C++STL(vector,map,set,list)成员函数整理
  8. RedHat升级Python到2.7.6
  9. 微信小程序实现顶部、底部联动滑动
  10. 【网摘】EasyUI常用控件禁用启用方法
  11. ANT与SVN集成
  12. canvas-8clip.html
  13. mssql sql server 系统更新,如何正确的增加表字段
  14. 在浏览器上安装 Vue Devtools工具
  15. 手写AVL 树(上)
  16. caffe中的lr_policy
  17. 【LOJ#6283】数列分块7
  18. 复习 HTML
  19. Python获取当前年月日
  20. Mysql在InnoDB引擎下索引失效行级锁变表锁案例

热门文章

  1. HTTP请求大全
  2. Pthon MySQLdb 的安装
  3. Centos6.8下安装oracle_11gr2版主要过程
  4. poj2608---几个字母映射到同一个数字
  5. iOS实现文件上传功能模块
  6. TASKKILL命令使用方法
  7. C#DataTable DataSet DataRow区别详解
  8. eclipse使用技巧---使用正则表达式查找替换
  9. Android入门——UI(2)
  10. &lt;转&gt;四个重要属性——Action、Data、Category、Extras