为什么会RE
  • 板块P1833 樱花
  • 楼主elinatotoro
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/1/22 15:43
  • 上次更新2023/10/28 11:33:28
查看原帖
为什么会RE
222220
elinatotoro楼主2022/1/22 15:43

1833为什么RE

#include<bits/stdc++.h>
using namespace std;
int t[10000001],c[10000001],num,dp[2][1001];
void cf(int x,int y,int z);
int main()
{
	int hs,he,ms,me,n,ta,i,tt,cc,pp,j;
	scanf("%d:%d",&hs,&ms);
	scanf("%d:%d",&he,&me);
	cin>>n;
	ta=he*60+me-hs*60-ms;
	for(i=1;i<=n;i++)
	{
		cin>>tt>>cc>>pp;
		if(pp==0)
		{
			cf(tt,cc,99999);
		}
		else
		{
			cf(tt,cc,pp);
		}
	}
	dp[0][0]=0;
	for(i=1;i<=n;i++)
	{
		dp[0][i]=-999999999;
	}
	for(i=1;i<=num;i++)
	{
		for(j=1;j<=ta;j++)
		{
			if(t[i]>j)
			{
				dp[i%2][j]=dp[(i-1)%2][j];
				continue;
			}                   
			dp[i%2][j]=max(dp[(i-1)%2][j-t[i]]+c[i],dp[(i-1)%2][j]);
		}
	}
	cout<<dp[num%2][ta]<<endl;
}
void cf(int x,int y,int z)
{
	int i=1;
	while(true)
	{
		if(z<i)
		{
			num++;
			t[num]=x*z;
			c[num]=y*z;
			break;
		}
		z-=i;
		num++;
		t[num]=i*x;
		c[num]=i*y;
		i*=2;
	}
	return;
}
2022/1/22 15:43
加载中...