20pts求助
查看原帖
20pts求助
1152154
Chinami_Nagisa楼主2024/10/15 19:59

想着在读入的时候直接处理不用开数组了结果写脱了zz

#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;
string s1,s2;
int n,V;
int T,C,P;
int dp[2005];
int compute(string s)
{
    int cnt1=0,cnt2=0;
    bool sec=0;
    for(int i=0,m=1;i<s.size();i++)
    {
        if(s[i]==':') cnt1*=60,m=1,sec=1;
        else if(!sec){
            cnt1+=(s[i]-'0');
            cnt1*=m;
            m*=10;
        }
        else{
            cnt2+=(s[i]-'0');
            cnt2*=m;
            m*=10;
        }
    }
    return cnt1+cnt2;
}
int main()
{
    cin>>s1>>s2>>n;
    V=compute(s2)-compute(s1);
    int wei,val;
    while(n--)
    {
        cin>>T>>C>>P;
        if(P==0) P=5000;
        for(int k=1;k<=P;k<<=1)
        {
            wei=k*T;
            val=k*C;
            for(int j=V;j-wei>=0;j--)
                dp[j]=max(dp[j],dp[j-wei]+val);
            P-=k;
        }
        if(P!=0)
        {
            wei=P*T;
            val=P*C;
            for(int j=V;j-wei>=0;j--)
                dp[j]=max(dp[j],dp[j-wei]+val);
        }
    }
    cout<<dp[V];
}
2024/10/15 19:59
加载中...