求助50分
  • 板块P1833 樱花
  • 楼主okzj
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/20 12:22
  • 上次更新2024/8/20 15:14:42
查看原帖
求助50分
1237183
okzj楼主2024/8/20 12:22
#include<iostream>
using namespace std;
const int N=1e4+5;;
int w[N],val[N],s[N],f[N];
string t1,t2;
int main(){
	int n;
	cin>>t1>>t2>>n;
	int t3=t1[2]*10+t1[3];
	int t4=t2[2]*10+t2[3];
	int ti;
	if(t4-t3<0)
	{
		ti=t4-t3+60;
		t2[0]--;
	}
	else ti=t4-t3;
	if(t2[0]-t1[0]>0)
	{
		ti+=(t2[0]-t1[0])*60;
	}

	int num=1;
	for(int i=0;i<n;i++)
	{
		int a,b,c;
		cin>>a>>b>>c;
		if(c==0)
		{
			w[num]=a;
			val[num]=b;
			s[num++]=0;
		}
		else 
		{
			if(c>1)
			{
				
				int k=1;
				while(k<=c)
				{
					w[num]=a*k;
					val[num]=b*k;
					s[num++]=1;
					c-=k;
					k*=2;
				}
				if(c)
				{
					w[num]=a*c;
					val[num]=b*c;
					s[num++]=1;
				}
			}
		}
	}
	for(int i=1;i<=num;i++)
	{
		if(s[i]==0)
		{
			for(int j=w[i];j<=ti;j++)
			{
				f[j]=max(f[j],f[j-w[i]]+val[i]);
			}
		}
		else
		{
			for(int j=ti;j>=w[i];j--)
			{
				f[j]=max(f[j],f[j-w[i]]+val[i]);
			}
		}
	}
	cout<<f[ti];
	return 0;
} 

2024/8/20 12:22
加载中...