hdu1864

来源:互联网 发布:java 高性能框架 编辑:程序博客网 时间:2024/05/22 05:34
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int maxn = 3e6+10;int dp[maxn];int a[35];int main(){    double q, n;    while(cin >> q >> n&&n)    {        int qq = q*100;        int k = 0;        for(int i = 0; i < n; i++)        {            int m, flag=0;            char ch;            double mon, p1 = 0, p2 = 0, p3 = 0;;            cin >> m;            while(m--)            {                getchar();                scanf("%c:%lf", &ch, &mon);                if(ch == 'A') p1 += mon;                else if(ch== 'B') p2 += mon;                else if(ch == 'C') p3 += mon;                else flag = 1;            }            if(flag||p1>600||p2>600||p3>600||p1+p2+p3>1000) continue;            a[k++] = (p1+p2+p3)*100;        }        memset(dp, 0, sizeof(dp));        for(int i = 0; i < k; i++)            for(int j = qq; j >= a[i]; j--)                dp[j] = max(dp[j-a[i]] + a[i], dp[j]);            printf("%.2lf\n", dp[qq]/100.0);    }}

原创粉丝点击