社区讨论

20pts求助

P1833樱花参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@m2ae622f
此快照首次捕获于
2024/10/15 20:00
去年
此快照最后确认于
2025/11/04 17:07
4 个月前
查看原帖
想着在读入的时候直接处理不用开数组了结果写脱了zz
CPP
#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];
}

回复

1 条回复,欢迎继续交流。

正在加载回复...