#9本地IDE运行答案正确&测评机认为不对
查看原帖
#9本地IDE运行答案正确&测评机认为不对
577287
2021201521txy楼主2024/6/17 14:22
#include<bits/stdc++.h>
using namespace std;
int dp[1005],t[105],f[105],h[105],d,n,flag[1005];
int main(){
	int tem=10;
	flag[10]=1;
	cin>>d>>n;
	for(int i=1;i<=n;i++)cin>>t[i]>>f[i]>>h[i];
	for(int i=1;i<=n;i++){
		if(tem<t[i])break;
		tem+=f[i];
		for(int j=min(tem,1000);j>=t[i];j--){
			if(flag[j-f[i]]&&flag[j]){
				if(dp[j]+h[i]>=d)dp[j]=dp[j]+h[i];
				else if(tem-f[i]==t[i])dp[j] = dp[j-f[i]];
				else dp[j]=max(dp[j-f[i]],dp[j]+h[i]);
			}
			else if(flag[j-f[i]])dp[j]=dp[j-f[i]],flag[j]=1;
			else if(flag[j]&&(tem-f[i]>t[i]||dp[j]+h[i]>=d))dp[j]=dp[j]+h[i];
			else continue;
			if(dp[j]>=d){
				cout<<t[i];
				return 0;
			}
		}
	}
//	int max_t=10;
//	for(int i=1;i<=n;i++){
//		if(max_t<t[i])break;
//		max_t+=f[i];
//	}
	cout<<tem;
	return 0;
} 

在本地运行#9后结果为2980与下载的#9答案一致,但不知道为什么测评机认为不对。

2024/6/17 14:22
加载中...