100分求助
  • 板块P1833 樱花
  • 楼主_Give_up_
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/10/1 16:56
  • 上次更新2023/10/27 09:20:29
查看原帖
100分求助
516468
_Give_up_楼主2022/10/1 16:56
#include<bits/stdc++.h>
#define N 10010

using namespace std;

int a[N],k[N],t[N],dp[N];

int main()
{
	int hour1,minute1,hour2,minute2;
	scanf("%d:%d",&hour1,&minute1);
	scanf("%d:%d",&hour2,&minute2);
	hour1 = hour1*100+minute1;
	hour2 = hour2*100+minute2;
	int time=0;
	for (int i=hour1+1;i<=hour2;i++)
	{
		time++;
		if (i%100==60) i = (i/100+1)*100;
	}
	int n;
	scanf("%d",&n);
	for (int i=1;i<=n;i++)
		scanf("%d%d%d",&t[i],&a[i],&k[i]);
	for (int i=1;i<=n;i++)
	{
		if (k[i]!=0)
		{
			for (int j=time;j>=t[i];j--)
			{
				if (k[i]==1) dp[j] = max(dp[j],dp[j-t[i]]+a[i]);
				else
				{
					for (int u=0;u<=k[i] && u*t[i]<=j;u++)
						dp[j]=max(dp[j],dp[j-u*t[i]]+u*a[i]);
				}
			}
		}
		else
		{
			for (int j=t[i];j<=time;j++)
				dp[j]=max(dp[j],dp[j-t[i]]+a[i]);
		}
	}
	cout << dp[time] << endl;
	return 0; 
}

被最后一个数据hack了

2022/10/1 16:56
加载中...