1 条题解
-
0
C++ :
#include <cstdio> #include <vector> #include <algorithm> using namespace std; int main() { int n; double q; while (scanf("%lf %d", &q, &n) && n > 0) { vector < int > v; for (int i = 0; i < n; ++i) { bool flag = true; int m; double sum = 0; scanf("%d", &m); while (m--) { double x; char type; scanf(" %c:%lf", &type, &x); if (type < 'A' || type > 'C') flag = false; if (x > 600) flag = false; sum += x; } if (sum > 1000) flag = false; if (flag) v.push_back(int(sum * 100 + 0.5)); } int m = int(q * 100 + 0.5); vector < bool > dp(m + 1, 0); dp[0] = 1; for (vector < int >::iterator it = v.begin(); it != v.end(); ++it) for (int j = m - *it; j >= 0; --j) if (dp[j]) dp[j + *it] = true; int ans = 0; for (int j = m; j >= 0; --j) if (dp[j]) { ans = j; break; } printf("%.2f\n", ans / 100.0); } return 0; }
- 1
信息
- ID
- 1175
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者