40pts求调
  • 板块P1833 樱花
  • 楼主hao12345ia
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/7/17 14:52
  • 上次更新2024/7/17 15:37:50
查看原帖
40pts求调
1258467
hao12345ia楼主2024/7/17 14:52
#include<bits/stdc++.h>
using  namespace std;
long long n,tempc[100001],x1,x2,t1,t2,temp2[100001];
long long t,s1[10001];
long long s[10001];
long long w[10001];
long long c[10001];
long long f[10001];
long long ti[10001];
int main(){
	scanf("%d:%d",&x1,&x2);
	scanf("%d:%d",&t1,&t2);
	t=(t1*60+t2)-(x1*60+x2);
	cin>>n;
	long long k=0;
	for(int i=1;i<=n;i++){
		cin>>temp2[i]>>tempc[i]>>s[i];
		int s2=s[i];
		if(s[i]==0){
			k++;
			s1[k]=s[i];
			w[k]=temp2[i];
			c[k]=tempc[i];
			continue;
		}
		for(int i=1;i<=n;i++){
			for(int j=1;j<=s[i];j*=2){
				k++;
				s1[k]=s2;
				c[k]=tempc[i]*j;
				w[k]=temp2[i]*j;
				s[i]-=j;
			}
			if(s[i]>0){
				k++;
				s1[k]=s2;
				c[k]=tempc[i]*s[i];
				w[k]=temp2[i]*s[i];
			}
		}
	}
	for(int i=1;i<=k;i++){
		if(s1[i]==0){
			for(int  j=w[i];j<=t;j++){
				f[j]=max(f[j],f[j-w[i]]+c[i]);
			}
			continue;
		}
		for(int j=t;j>=w[i];j--){
			f[j]=max(f[j],f[j-w[i]]+c[i]);
		}
	}
	cout<<f[t];
}
2024/7/17 14:52
加载中...