博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zoj 1409 Communication System
阅读量:5104 次
发布时间:2019-06-13

本文共 1940 字,大约阅读时间需要 6 分钟。

/*如果要一个物体的多种属性,最好用结构体,不要用二维数组或者多维数组。用多维数组进行关键字排序很不稳定 */ /*给每个设备的所有价格排序,每个设备选取恰好比已知带宽大的价格(这个时候的比例最大)  循环每个设备就得到所有价格综合 然后得到该带宽下的B/P比较所有带宽的B/P 选取最大的就是所求的*/ #include 
#include
#define true 1#define false 0 typedef struct { int b, p; }SYS;SYS sys[100][100];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[100], bc; int b[10000];/*记录每种带宽*/ double max,temp; scanf("%d",&t); while(t--) { scanf("%d",&n); bc = 0; for( i = 0; i < n; i++) { scanf("%d",&m[i]); for( j = 0; 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 = 0; for( k = 0; k < bc; k++)/*循环每个带宽 */ { sum = 0; could = true; for(i = 0; i < n; i++)/*每个设备 */ { for(j = 0; 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 0;}/*132 120 80 155 403 100 25 150 35 80 252 100 100 120 110*/

 

转载于:https://www.cnblogs.com/woshijishu3/p/3621367.html

你可能感兴趣的文章
距离公式汇总以及Python实现
查看>>
设计模式之装饰者模式
查看>>
一道不知道哪里来的容斥题
查看>>
Blender Python UV 学习
查看>>
window添加右键菜单
查看>>
入手腾龙SP AF90mm MACRO
查看>>
python学习4 常用内置模块
查看>>
Window7上搭建symfony开发环境(PEAR)
查看>>
ResolveUrl的用法
查看>>
Linux内核态、用户态简介与IntelCPU特权级别--Ring0-3
查看>>
第23月第24天 git命令 .git-credentials git rm --cached git stash clear
查看>>
java SE :标准输入/输出
查看>>
一些方便系统诊断的bash函数
查看>>
jquery中ajax返回值无法传递到上层函数
查看>>
css3之transform-origin
查看>>
[转]JavaScript快速检测浏览器对CSS3特性的支持
查看>>
Master选举原理
查看>>
[ JAVA编程 ] double类型计算精度丢失问题及解决方法
查看>>
小别离
查看>>
微信小程序-发起 HTTPS 请求
查看>>