/* UVas */
/*****************************************************************************/
#define N 11
#define M 101
int t, n, m;
int g[N][M];
int d[N][M];
int main(void) {
scanf("%d", &t);
while (t--) {
scanf("%d %d", &n, &m);
for (int i=1; i<=n; i++)
for (int j=1; j<=m; j++)
scanf("%d", &g[i][j]);
memset(d, -1, sizeof(d));
d[0][0]=0;
for (int i=1; i<=n; i++)
for (int j=m; j&&g[i][j]>=5; j--)
for (int k=m; k>=j; k--)
if (d[i-1][k-j]!=-1)
d[i][k]=max(d[i][k], d[i-1][k-j]+g[i][j]);
if (d[n][m]==-1)
printf("Peter, you shouldn't have played billiard that much.\n");
else
printf("Maximal possible average mark - %.2lf.\n", (double)(d[n][m]+1e-9)/n);
}
}
/*****************************************************************************/
UVa 11341
based on classic 0-1 knapsack problem, the DAG is extended to 3-dimension, it needs an iteration on the giving out 2-dimension table. When doing, make sure that current table element is above 5. Also, DP matrix need to be initialized to -1 for reaching check...
Subscribe to:
Post Comments
(
Atom
)
No comments :
Post a Comment