#include<bits/stdc++.h>
using namespace std;
dp[i][j]:
i:遍历下标
j:剩余时间
*/
int n,h,t,p[222],d[222],c[222],dp[222][4000];
int main()
{
scanf("%d%d%d",&n,&h,&t);
for (int i=1;i<=n;i++)
{
scanf("%d%d%d",&p[i],&d[i],&c[i]);
}
h*=60;
memset(dp,-0x3f,sizeof(dp));
for (int i=1;i<=n;i++)
{
dp[i][h]=0;
for (int m=1;m*t<=h;m++)
{
dp[i][h-m*t]=(p[i]+(p[i]-(m-1)*d[i]))*m/2;
// assert(h-m*t>=0);
}
}
for (int i=1;i<=n;i++)
{
for (int j=h;j>=0;j++)
{
for (int k=0;k<=n;k++)
{
dp[i][j]=max(dp[i-1][j],dp[i-1][j+t*k+c[i-1]]+(2*p[i]+(k-1)*d[i])*k/2);
}
}
}
int mx=0;
for (int i=1;i<=n;i++) for (int i=0;i<=h;i++) mx=max(mx,dp[n][i]);
printf("%d",mx);
return 0;
}
1 个赞
RE?
开大点呗
2 个赞
第三行上面忘加了个*/,跟大家说一下
2 个赞
我尝试过开dp[4000][4000],但还是RE
2 个赞
题目范围多大
2 个赞
n<=200,h<=10,这是dp中的两个数
2 个赞
都没有
2 个赞
你这个倒数第四行寻找答案时怎么两层for循环都是i啊
3 个赞
也对
3 个赞
哦,我眼瞎了
3 个赞
