http://acm.hust.edu.cn/vjudge/contest/view.action?cid=65411#problem/A
dp[i][j]代表到达第i行最小带宽为j的最小价格!
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
const int INF = 0x3f3f3f3f;
int dp[110][1010];
int main(){
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
memset(dp, 0x3f, sizeof(dp));
for(int i=1; i<=n; i++){
int num;
scanf("%d",&num);
for(int j=1; j<=num; j++){
int b,p;
scanf("%d%d",&b,&p);
if(i == 1)
dp[1][b] = min(dp[1][b], p);
else{
for(int k=0; k<1010; k++){
if(dp[i-1][k] != INF){
if(k <= b) dp[i][k] = min(dp[i][k], dp[i-1][k] + p);
else dp[i][b] = min(dp[i][b], dp[i-1][k] + p);
}
}
}
}
}
double ans = 0;
for(int k=0; k<1010; k++)
if(dp[n][k] != INF)
ans = max(double(k)/dp[n][k], ans);
printf("%.3lf\n", ans);
}
///system("pause");
return 0;
}