标签:des style color strong os width
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 22862 | Accepted: 8126 |
Description
Input
Output
Sample Input
1 3 3 100 25 150 35 80 25 2 120 80 155 40 2 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<stdio.h>
#include<iostream>
#include<algorithm>
#define M 1005
using 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);
}
double max(double x,double 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;
}
poj 1018 Communication System,布布扣,bubuko.com
标签:des style color strong os width
原文地址:http://blog.csdn.net/fyxz1314/article/details/37956317