请问大佬们我怎么错了?
  • 板块P1833 樱花
  • 楼主LiuzihanAC
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/6/16 23:59
  • 上次更新2023/11/4 21:48:52
查看原帖
请问大佬们我怎么错了?
389982
LiuzihanAC楼主2021/6/16 23:59
#include<iostream>
using namespace std;

int x1,y11,x2,y2,n;
int a[100005],b[100005],c[100005],f[100005];

int main(){
	scanf("%d:%d %d:%d",&x1,&y11,&x2,&y2);
	int m = x2*60+y2-x1*60-y11;
	int num=1;
	cin>>n;
	for(int i=1;i<=n;i++){
		int v,w,s;
		cin>>v>>w>>s;
		if(s==0){
			a[num]=v;
			b[num]=w;
			c[num++]=s;
		}
		else{
			int k=1;
			while(s>=k){
				a[num] = v*k;
				b[num] = w*k;
				c[num++] = 1;
				s-=k;
				k <<= 1;
			}
			if(s){
				a[num] = v*s;
				b[num] = w*s;
				c[num++] = 1;
			}
		}
	}
	for(int i=1;i<num;i++){
		if(c[num]==1){
			for(int j=m;j>=a[i];j--){
				f[j] = max(f[j],f[j-a[i]]+b[i]);
			}
		}	
		else{
			for(int j=a[i];j<=m;j++){
				f[j] = max(f[j],f[j-a[i]]+b[i]);
			}
		}
	}
	cout<<f[m];
	return 0;
} 
2021/6/16 23:59
加载中...