给出n首歌的时间,和时间限制,求出在规定时间内能够唱的最多曲数,还有加上劲歌金曲的总时间
测试用例:
2
3 100
60 70 80
3 100
30 69 70
#include<bits/stdc++.h>
using namespace std;
const int maxn = 55;
int a[maxn], n, t, T, dp[10003];
int main()
{
while (cin >> T) {
for (int k = 1; k <= T; k++) {
cin >> n >> t; t--;
for (int i = 1; i <= n; i++)
cin >> a[i];
int maxx = 0;
memset(dp, 0, sizeof(dp));
for (int i = 1; i <= n; i++) {
for (int j = t; j >= a[i]; j--) {
if (dp[j-a[i]] || j == a[i]) {
maxx = max(maxx, dp[j] = max(dp[j], dp[j-a[i]]+1));
}
}
}
int l;
for (l = t; dp[l] != maxx; l--);
if (maxx)
printf("Case %d: %d %d\n", k, maxx+1, l+678);
else
printf("Case %d: %d %d\n", k, 1, 678);
}
}
}
菜鸟的第一道dp题,记录下最大值,如果都没歌选就只选劲歌金曲