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); }}