萌新40pts求助
  • 板块P1833 樱花
  • 楼主空无一人
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/4 17:41
  • 上次更新2023/11/4 20:11:37
查看原帖
萌新40pts求助
333639
空无一人楼主2023/11/4 17:41

记录详情 link

代码:

#include<bits/stdc++.h>
using namespace std;
long long f[2000010];
struct full{
	long long val,wei;
}b[1000010];
struct fulll{
	long long val,wei;
}a[1000010];
int main(){
	long long n,t,h1,h2,ti1,ti2,t1=0,t2=0;
	char ch;
	cin>>h1>>ch>>ti1>>h2>>ch>>ti2>>n;
	t=(h2-h1)*60+ti2-ti1;
	for(int i=1;i<=n;i++){
		long long x,y,z;
		cin>>x>>y>>z;
		if(!z){
			b[++t1].val=y;
			b[t1].wei=x;
		}
		else{
			long long now=1;
			while(now<=z){
				a[++t2].wei=now*x;
				a[t2].val=now*y;
				z-=now;
				now*=2;
			}
			if(!z){
				a[++t2].wei=z*x;
				a[t2].val=z*y;
			}
		}
	}
	for(int i=1;i<=t1;i++){
		for(int j=b[i].wei;j<=t;j++){
			f[j]=max(f[j-b[i].wei]+b[i].val,f[j]);
		}
	}
	for(int i=1;i<=t2;i++){
		for(int j=t;j>=a[i].wei;j--){
			f[j]=max(f[j],f[j-a[i].wei]+a[i].val);
		}
	}
	cout<<f[t]<<endl;
	return 0;
}

题解区没有和我代码相似的OvO

求大佬解答

2023/11/4 17:41
加载中...