用二进制优化做的,WA了最后两个点,实在看不出来哪里有问题
#include<bits/stdc++.h>
using namespace std;
long long t,e,m1,p,n,m,v[11111],w[11111],s,f[11111],ww,vv,cnt;
char temp;
int main(){
cin>>t>>temp>>e;
cin>>m1>>temp>>p;
cin>>n;
m=(m1-t)*60+(p-e);
for(long long i=1;i<=n;i++){
cin>>ww>>vv>>s;
if(s==0) s=m/ww;
for(long long j=1;j<=s;j*=2){
w[++cnt]=j*ww;
v[cnt]=j*vv;
s-=j;
}
if(s>0) w[++cnt]=s*ww,v[cnt]=s*vv;
}
for(long long i=1;i<=cnt;i++) for(long long j=m;j>=w[i];j--) f[j]=max(f[j],f[j-w[i]]+v[i]);
cout<<f[m];
return 0;
}