| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
写了直接交了,过了,但后来发现一个问题,求解#include <stdio.h>
#include <string.h>
int a[105];//代表n种设备的数量
int b[105][105][2];//b[][][0]代表某种设备的B值,b[][][1]代表某种设备的P值
int main()
{
int test,t;
int n;//需要的设备数量
int i,j,k;
int max,min,mat;
int sump;//P的相加
double result,tp;//tp记录结果
scanf("%d",&test);
for(t=0;t<test;t++)
{
max=1000000;
min=1000000;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
mat=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
for(j=1;j<=a[i];j++)
{
scanf("%d%d",&b[i][j][0],&b[i][j][1]);
if(b[i][j][0]<min) min=b[i][j][0];
if(b[i][j][0]>mat) mat=b[i][j][0];
}
if(max>mat) max=mat;
}
//printf("%d %d \n",min,max);
tp=0.0;
for(i=min;i<=max;i++)//i即为B,B固定,再寻找P
{
sump=0;
for(j=1;j<=n;j++)
{
mat=1000000;
for(k=1;k<=a[j];k++)//找出每一行的最小P
{
if(b[j][k][0]>=i && b[j][k][1]<mat)
mat=b[j][k][1];
}
sump+=mat;
}
result=(i+0.0)/(sump+0.0);
if(result>tp)
tp=result;//result=tp;
}
printf("%.3lf\n",tp);
}
return 0;
}
//
//
for(i=min;i<=max;i++)这一句的时候好像没有判断i是属于所输入的所有的B的一个啊??还是我理解错了???????????
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator