80pts WA最后俩点
  • 板块P1833 樱花
  • 楼主LIXE_115
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/10 19:32
  • 上次更新2023/11/2 14:37:25
查看原帖
80pts WA最后俩点
1025479
LIXE_115楼主2023/10/10 19:32
#include<bits/stdc++.h>
using namespace std;
#define int long long
int it,N,c1,c2,n;string s1,s2;
struct tr{
    int t,c,p;
}w[10005];
struct ty{
    int t,c;
}a[10005],d[10005];
int dp[100005];
void init(){
    int time[5],sum=0,cnt=0;;
    for(int i=0;i<s1.size();i++){
        if(s1[i]==':'){
            time[cnt]=sum;
            cnt++;
            sum=0;continue;
        }
        sum=sum*10+s1[i]-48;
    }
    time[cnt]=sum;cnt++;
    sum=0;
    for(int i=0;i<s2.size();i++){
        if(s2[i]==':'){
            time[cnt]=sum;
            cnt++;
            sum=0;continue;
        }
        sum=sum*10+s2[i]-48;  
    }
    time[cnt]=sum;cnt++;
    int a=time[2]-time[0],b=time[3]-time[1];
    it=a*60+b;
}
signed main(){
    // freopen("D://P1833_9.in","r",stdin);
    // freopen("D://P1833_9.ou","w",stdout);
    cin>>s1>>s2;
    init();
    cin>>N;
    int T,C,P;
    for(int i=0;i<N;i++){
        cin>>T>>C>>P;
        if(P==0){
            d[c1].c=C;d[c1].t=T;
            c1++;
        }
        if(P!=0){
            w[c2].c=C;w[c2].p=P;w[c2].t=T;
            c2++;
        }
    }
    for(int i=0;i<c2;i++){
        for(int j=1;j<=w[i].p;j<<=1){
            w[i].p-=j;a[n].c=j*w[i].c;a[n].t=j*w[i].t;n++;
        }
        if(w[i].p>0){
            a[n].c=w[i].p*w[i].c;
            a[n].t=w[i].p*w[i].t;n++;
        }
    }
    for(int i=0;i<n;i++){
        for(int j=it;j>=a[i].t;j--){
            if(dp[j]<dp[j-a[i].t]+a[i].c)
            dp[j]=dp[j-a[i].t]+a[i].c;
        }
    }
    for(int i=0;i<c1;i++){
        for(int j=d[i].t;j<=it;j++){
            if(dp[j]<dp[j-d[i].t]+d[i].c){
                dp[j]=dp[j-d[i].t]+d[i].c;
            }
        }
    }
    cout<<dp[it];
    return 0;
}

RT,究竟哪里错了(大悲

2023/10/10 19:32
加载中...