100分求助
查看原帖
100分求助
697201
whitenightdaye楼主2022/10/13 16:44
#include<bits/stdc++.h>
using namespace std;
int n,h,m,c[10010],t[10010],p[10010],d,dp[100010];
char x;
int main()
{
    cin>>h>>x>>m;
    d=h*60+m;
    cin>>h>>x>>m;
    d=h*60+m-d;
    cin>>n;
    for(int i=1;i<=n;++i)
    {
        cin>>t[i]>>c[i]>>p[i];
    }
    for(int i=1;i<=n;++i)
    {
        if(p[i]==0)
        {
            for(int j=t[i];j<=d;++j)
            {
                dp[j]=max(dp[j],dp[j-t[i]]+c[i]);
            }
        }
        else
        {
            for(int j=d;j>=t[i];--j)
            {
                for(int k=0;k<=p[i];++k)
                {
                    if(j>=k*t[i])
                    {
                        dp[j]=max(dp[j],dp[j-k*t[i]]+k*c[i]);
                    }
                }
            }
        }
    }
    cout<<dp[d];
    return 0;
}
2022/10/13 16:44
加载中...