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

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

Communication System
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 22862   Accepted: 8126

Description

We have received an order from Pizoor Communications Inc. for a special communication system. The system consists of several devices. For each device, we are free to choose from several manufacturers. Same devices from two manufacturers differ in their maximum bandwidths and prices. 
By overall bandwidth (B) we mean the minimum of the bandwidths of the chosen devices in the communication system and the total price (P) is the sum of the prices of all chosen devices. Our goal is to choose a manufacturer for each device to maximize B/P. 

Input

The first line of the input file contains a single integer t (1 ≤ t ≤ 10), the number of test cases, followed by the input data for each test case. Each test case starts with a line containing a single integer n (1 ≤ n ≤ 100), the number of devices in the communication system, followed by n lines in the following format: the i-th line (1 ≤ i ≤ n) starts with mi (1 ≤ mi ≤ 100), the number of manufacturers for the i-th device, followed by mi pairs of positive integers in the same line, each indicating the bandwidth and the price of the device respectively, corresponding to a manufacturer.

Output

Your program should produce a single line for each test case containing a single number which is the maximum possible B/P for the test case. Round the numbers in the output to 3 digits after decimal point. 

Sample Input

1 33 100 25 150 35 80 252 120 80 155 402 100 100 120 110

Sample Output

0.649

题意:某公司要建立一套通信系统,该通信系统须要n种设备,而每种设备分别能够有m1、m2、m3、...、mn个厂家提供生产。而每一个厂家生产的同种设备都会存在两个方面的区别:带宽bandwidths 和 价格prices。

如今每种设备都各须要1个,考虑到性价比问题,要求所挑选出来的n件设备。要使得B/P最大。
当中B为这n件设备的带宽的最小值,P为这n件设备的总价。

思路:dp[i][j] 选择第i个设备时,带宽为j的最小费用。

#include
#include
#include
#define M 1005using namespace std;int dp[M][M];int l[M];struct node { int x,y;}p[M][M];int min (int x,int y){ return (x
y?x:y);}int main (){ int t,n; int a,b; int i,j,k,max1; cin>>t; while(t--) { cin>>n; max1=0; memset(dp,0x3f,sizeof(dp)); // 记得初始化 for(i=1;i<=n;i++) { cin>>l[i]; for(j=1;j<=l[i];j++) { cin>>a>>b; if(a>max1) max1=a; p[i][j].x=a; p[i][j].y=b; } } for(i=0;i<=max1;i++) dp[0][i]=0; for(i=1;i<=n;i++) { for(j=1;j<=l[i];j++) { for(k=1;k<=p[i][j].x;k++) dp[i][k]=min(dp[i][k],dp[i-1][k]+p[i][j].y); } } double ans=0; for(i=1;i<=max1;i++) ans=max(ans,(double)i*1.0/(double)dp[n][i]); printf("%.3lf\n",ans); } return 0;}

转载地址:http://kayyl.baihongyu.com/

你可能感兴趣的文章
thread.join() 方法存在的必要性是什么?
查看>>
关于audio标签播放跨域的问题
查看>>
用WPF窗体打造个性化界面的图片浏览器
查看>>
zookeeper 集群搭建
查看>>
WPF自定义控件(二)の重写原生控件样式模板
查看>>
分布式系统理论基础 - CAP
查看>>
跨站脚本功攻击,xss,一个简单的例子让你知道什么是xss攻击
查看>>
win 停止tomcat
查看>>
Laravel-mix 中文文档
查看>>
Eureka核心知识点
查看>>
Sword STL迭代器prev,next相关函数
查看>>
小学生坐马桶上都看得懂的加密与通讯
查看>>
MS CRM 2011 如何从外部连接CRM 二
查看>>
Eclipse构建路径
查看>>
10条不可不知的手机礼仪 看看你犯过哪几项?
查看>>
:c#的remoting里,CallContext.GetData获得的对象老是空的?该怎么处理
查看>>
.NET设计模式(2): 工厂方法模式
查看>>
appium 自动化测试之知乎Android客户端
查看>>
如何使用Log4j?
查看>>
发送一个记录数据包
查看>>