P1833 70分求助
查看原帖
P1833 70分求助
1395756
ybc2027_liaozixu楼主2025/7/28 10:41
#include <bits/stdc++.h>
using namespace std;
int start_h,end_h;
int start_m,end_m;
char tmp;
int n;
const int M=10000+5;
int t[M],c[M],p[M];
int dp[3][M];
int sum_time;
string start;
string end1;
int main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	cin>>start;
	cin>>end1;
	for(int i=0;i<start.size();i++){
		if(start[i]==':'){
			start_h=stoi(start.substr(0,i));
			start_m=stoi(start.substr(i+1));
		}
	}
	for(int i=0;i<end1.size();i++){
		if(end1[i]==':'){
			end_h=stoi(end1.substr(0,i));
			end_m=stoi(end1.substr(i+1));
		}
	}
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>t[i]>>c[i]>>p[i];
	}
	int olda=1;
	int new1=0;
	sum_time=60*end_h+end_m-60*start_h-start_m;
	memset(dp, 0, sizeof(dp));
	for(int i=1;i<=n;i++){
		swap(olda,new1);
		if(p[i]==0){
			for(int j=0;j<=sum_time;j++){
				for(int cnt=0; ;cnt++){
					if(j-t[i]*cnt<0){
						break;
					}
					dp[new1][j]=max(dp[olda][j-cnt*t[i]]+cnt*c[i],dp[olda][j]);
				}
			}
		} else {
			for(int j=0;j<=sum_time;j++){
				for(int cnt=0;cnt<=p[i];cnt++){
					if(j-t[i]*cnt<0){
						break;
					}
					dp[new1][j]=max(dp[olda][j-cnt*t[i]]+cnt*c[i],dp[olda][j]);
				}
			}
		}
	}
	cout<<dp[new1][sum_time]<<"\n";
	return 0;
}

WA了三个点。

2025/7/28 10:41
加载中...