0,求条
查看原帖
0,求条
1446545
XHZnewlife楼主2024/11/28 13:55
#include<bits/stdc++.h>
using namespace std;
long long n,m,t;
long long _max=0;
struct neiger{
	long long a,b;
};
struct fruit{
	long long worktime;
	long long work;
};
vector <neiger> black;
fruit dp[1005];
void gowork(){
	for(int i=0;i<=t;i++){
		if(i<=m)dp[i].worktime=0;
		else dp[i].worktime=INT_MAX;
	}
	for(int i=0;i<n;i++){
		for(int j=m+black[i].a-1;j<=t;j++){
			dp[j].worktime=min(dp[j-dp[j].work].worktime+1,dp[j-black[i].b+black[i].a].worktime+1);
			if(dp[j].worktime==dp[j-black[i].b+black[i].a].worktime+1 and j!=m+black[i].a-1)dp[j].work=dp[j-black[i].b+black[i].a].work+black[i].b;
//			cout<<j<<" "<<dp[j].work<<" "<<dp[j].worktime<<endl;
		}
	}
}
int main(){
	cin>>n>>m>>t;
	for(int i=0,a,b;i<n;i++){
		cin>>a>>b;
		black.push_back({a,b});
	}
	gowork();
	cout<<dp[t].worktime;
}
2024/11/28 13:55
加载中...