ac

瑞瑞 · 发布于 2026-05-31 · 浏览 153 回复 0

include<bits/stdc++.h>

using namespace std; int dp[2][800001];

int main(){

int n; cin>>n; memset(dp,0xf0,sizeof dp); dp[0][400000]=0; for(int i=1;i<=n;i++){

int s,f;
cin>>s>>f;
for(int j=0;j<=800000;j++){
	if(j-s>=0&&j-s<=800000)
	dp[i%2][j]=max(dp[(i-1)%2][j],
	dp[(i-1)%2][j-s]+s+f);
	else dp[i%2][j]=dp[(i-1)%2][j];
}

} int ans=0; for(int j=400000;j<=800000;j++){

if(dp[n%2][j]-(j-400000)>=0){
	ans=max(ans,dp[n%2][j]);
} 

} cout<<ans; return 0; }

全部回复 共 0 条

还没有人回复。往下写第一条。

发表回复