标签:des style http color os io strong for
4 75 1 75 2 75 3 75 10
3.0000 3.0000 2.7500 3.0000 2.6667 3.1667 2.4000 3.2000HintIn the third case, there are many possible ways to calculate the minimum value of the GPA in the 4-Point Scale. For example, Scores 78 74 73 GPA = (3.0 + 2.5 + 2.5) / 3 = 2.6667 Scores 79 78 68 GPA = (3.0 + 3.0 + 2.0) / 3 = 2.6667 Scores 84 74 67 GPA = (3.5 + 2.5 + 2.0) / 3 = 2.6667 Scores 100 64 61 GPA = (4.0 + 2.0 + 2.0) / 3 = 2.6667
题意:告诉你n个人的平均数,求最大的,最小的平均绩点
思路:简单的DP,dp[i][j]前i个人总分j的最大绩点和
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn = 105; const double inf = 90000000.0; double dp[15][1010], tab[105]; double lp[15][1010]; int main() { for (int i = 60; i <= 69; i++) tab[i] = 2.0; for (int i = 70; i <= 74; i++) tab[i] = 2.5; for (int i = 75; i <= 79; i++) tab[i] = 3.0; for (int i = 80; i <= 84; i++) tab[i] = 3.5; for (int i = 85; i <= 100; i++) tab[i] = 4.0; memset(dp, 0, sizeof(dp)); for (int i = 60; i <= 100; i++) dp[1][i] = tab[i]; for (int i = 2; i <= 10; i++) for (int j = 60; j <= 100; j++) for (int k = j; k <= 1000; k++) if (dp[i-1][k-j] != 0) dp[i][k] = max(dp[i][k], dp[i-1][k-j]+tab[j]); for (int i = 0; i <= 10; i++) for (int j = 0; j <= 1000; j++) lp[i][j] = inf; for (int i = 60; i <= 100; i++) lp[1][i] = tab[i]; for (int i = 2; i <= 10; i++) for (int j = 60; j <= 100; j++) for (int k = j; k <= 1000; k++) if (lp[i-1][k-j] != inf) lp[i][k] = min(lp[i][k], lp[i-1][k-j]+tab[j]); int v, n; int t; scanf("%d", &t); while (t--) { scanf("%d%d", &v, &n); printf("%.4lf %.4lf\n", lp[n][n*v]/n, dp[n][n*v]/n); } return 0; }
HDU 4968 Improving the GPA,布布扣,bubuko.com
标签:des style http color os io strong for
原文地址:http://blog.csdn.net/u011345136/article/details/38689705