第一个数据本地测试没问题~~~
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{
int Start_Hour, Start_Minute, Finish_Hour, Finish_Minute, Tree;
scanf("%d:%d%d:%d%d", &Start_Hour, &Start_Minute, &Finish_Hour, &Finish_Minute, &Tree);
int Available_Time = (Finish_Hour * 60 + Finish_Minute) - (Start_Hour * 60 + Start_Minute);
std::vector<int> DP(Available_Time + 1000, 0);
for (int i = 1; i <= Tree; i ++)
{
int w, v, s;
scanf("%d%d%d", &w, &v, &s);
if (!s)
{
for (int j = w; j <= Available_Time; j ++)
DP[j] = max(DP[j], DP[j - w] + v);
}
else
{
for (int k = 1; k <= s; k *= 2)
{
for (int j = Available_Time; j >= w * k; j --)
DP[j] = max(DP[j], DP[j - w * k] + v * k);
s -= k;
}
if (s)
{
for (int j = Available_Time; j >= w * s; j --)
DP[j] = max(DP[j], DP[j - w * s] + v * s);
}
}
}
cout << DP[Available_Time] << endl;
return 0;
}