#include <iostream>
#include <vector>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <cstring>
#include <unordered_map>
#include <unordered_set>
#include <algorithm>
#include <numeric>
#include <chrono>
#include <ctime>
#include <cmath>
#include <cctype>
#include <string>
#include <cstdio>
#include <iomanip>
#include <thread>
#include <mutex>
#include <condition_variable>
#include <functional>
#include <iterator>
using namespace std;
int dp[10000]= {0};
int sum[10000] = {0};
int arr[100] = { 0 };
int main()
{
int n,id = 0;
cin >> n;
while (n--) {
memset(dp, 0, sizeof(dp));
memset(sum, 0, sizeof(sum));
int m, t,temp = 0;
cin >> m>>t;
for (int i = 1; i <= m; ++i)
cin >> arr[i];
for (int i = 1; i <= m; ++i) {
for (int j = t - 1; j >= arr[i]; j--) {
int v = j - arr[i];
if (dp[v] + 1 > dp[j]) {
dp[j] = dp[v] + 1;
sum[j] = sum[v] + arr[i];
}
else if (dp[v] + 1 == dp[j]) {
if (sum[j] < sum[v] + arr[i])
sum[j] = sum[v] + arr[i];
}
}
}
cout << "Case " << ++id << ": " << dp[t-1] + 1 << " " << sum[t-1] + 678 << endl;
}
return 0;
}
例题9-5(uva-12563金歌劲曲)
最新推荐文章于 2022-01-16 19:14:59 发布