80分求助,最后2个点没过
  • 板块P1833 樱花
  • 楼主heshaoshuai
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/7/20 16:55
  • 上次更新2023/10/27 19:17:24
查看原帖
80分求助,最后2个点没过
701568
heshaoshuai楼主2022/7/20 16:55

#include<bits/stdc++.h> using namespace std;

const int N=11000; int c[N],t[N],p[N],dp[N];
int main()
{ char s1[10],s2[10];

int n,m;

cin>>s1>>s2>>n; m=((int)s2[0]-(int)s1[0])*60+((int)s2[2]-(int)s1[2])*10+(int)s2[3]-(int)s1[3]; for(int i=1;i<=n;i++)

{ cin>>t[i]>>c[i]>>p[i];

}

for(int i=1;i<=n;i++)

{

int res=p[i];

if(p[i]>0)

{ for(int k=1;res-k>=0;k*=2)

{

res-=k;

for(int j=m;j>=k*t[i];j--)

{

dp[j]=max(dp[j],dp[j-k*t[i]]+k*c[i]);

}

}

for(int j=m;j>=res*t[i];j--)

{ dp[j]=max(dp[j],dp[j-res*t[i]]+res*c[i]);

}

}

else

for(int j=t[i];j<=m;j++)

{

dp[j]=max(dp[j],dp[j-t[i]]+c[i]); }

}

cout<<dp[m];

}

2022/7/20 16:55
加载中...