社区讨论

80分求助,最后2个点没过

P1833樱花参与者 3已保存回复 3

讨论操作

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

当前回复
3 条
当前快照
1 份
快照标识符
@lo8ir0f9
此快照首次捕获于
2023/10/27 19:17
2 年前
此快照最后确认于
2023/10/27 19:17
2 年前
查看原帖
#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];
}

回复

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

正在加载回复...