zoukankan      html  css  js  c++  java
  • hdu 4968 Improving the GPA dp

    【题意】:每个成绩范围对应一个绩点,给出平均分avg,课程数n,求能得到的平均绩点的最大值和最小值。

    【解法】:   d[i][j]表示总分为i 课程数为j时 可以得到的最大的总绩点。

                       状态转移为: d[i][j]=max(d[i][j],d[i-k][j-1]+d[k][1]);   (60<=k<=100&&i-k>=60*(j-1))

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<map>
     4 #include<algorithm>
     5 #include<cstring>
     6 using namespace std;
     7 double temp[102];
     8 double d[1002][12];
     9 #define INF 9999999
    10 
    11 int main()
    12 {
    13 
    14     int n,m,sum,t;
    15     for(int i=60;i<=69;i++)
    16         temp[i]=2.0;
    17     for(int i=70;i<=74;i++)
    18         temp[i]=2.5;
    19     for(int i=75;i<=79;i++)
    20         temp[i]=3.0;
    21     for(int i=80;i<=84;i++)
    22         temp[i]=3.5;
    23     for(int i=85;i<=100;i++)
    24         temp[i]=4.0;
    25 
    26     scanf("%d",&t);
    27     while(t--)
    28     {
    29         scanf("%d%d",&m,&n);
    30         sum=m*n;
    31         for(int i=0;i<=sum;i++)
    32             for(int j=0;j<=n;j++)
    33                 d[i][j]=INF;
    34         for(int i=60;i<=100;i++)
    35             d[i][1]=temp[i];
    36 
    37         for(int j=2;j<=n;j++)
    38             for(int i=0;i<=sum;i++)
    39                 for(int k=60;k<=100&&(i-k>=60*(j-1));k++)
    40                      d[i][j]=min(d[i][j],d[i-k][j-1]+d[k][1]);
    41         printf("%.4lf ",d[sum][n]/n);
    42 
    43         for(int i=0;i<=sum;i++)
    44             for(int j=0;j<=n;j++)
    45                 d[i][j]=0;
    46 
    47         for(int i=60;i<=100;i++)
    48             d[i][1]=temp[i];
    49 
    50         for(int j=2;j<=n;j++)
    51             for(int i=0;i<=sum;i++)
    52                 for(int k=60;k<=100&&(i-k>=60*(j-1));k++)
    53                      d[i][j]=max(d[i][j],d[i-k][j-1]+d[k][1]);
    54         printf("%.4lf
    ",d[sum][n]/n);
    55 
    56     }
    57 
    58     return 0;
    59 }
  • 相关阅读:
    uva 1391(2-SAT)
    uva 1146(2-SAT+二分判断)
    uva 12167(强连通分支)
    uva 11324(强连通分支+DAG)
    Codeforces Round #227 (Div. 2) 解题报告
    uva 10319(2-SAT)
    uva 610(割边)
    uva 11504(强连通分支)
    测试:网页测试,入门面试题
    测试:安装包的测试
  • 原文地址:https://www.cnblogs.com/assult/p/3925526.html
Copyright © 2011-2022 走看看