40分求助
  • 板块P1833 樱花
  • 楼主Bobi2014
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/13 21:44
  • 上次更新2024/10/14 10:41:51
查看原帖
40分求助
1211899
Bobi2014楼主2024/10/13 21:44
#include<bits/stdc++.h>
using namespace std;
int sh,sm,eh,em,tim,c[100100],ti[100100],m,n,dp[1010];
char tmp;
int main(){
	cin >> sh >> tmp >> sm >> eh >> tmp >> em >> m;
	tim = (eh - sh - 1) * 60 + 60 + em - sm;
	for(int i = 1,tc,tt,tp,ep;i <= m;i ++){
		cin >> tt >> tc >> tp;
		ep = tt * tp;
		if(tp == 0){
			while(tt <= tim){
				n ++;
				c[n] = tc;
				ti[n] = tt;
				tc <<= 1;
				tt <<= 1;
			}
		}else{
			while(tt <= ep){
				n ++;
				c[n] = tc;
				ti[n] = tt;
				tc <<= 1;
				tt <<= 1;
			}
		}
	}
	for(int i = 1;i <= n;i ++){
		for(int j = tim;j >= 1;j --){
			if(j >= ti[i]){
				dp[j] = max(dp[j],dp[j - ti[i]] + c[i]);
			} 
		}
	}
	cout << dp[tim];
	return 0;
}

提交记录

2024/10/13 21:44
加载中...