瑞瑞 • 7小时前
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; }
评论:
请先登录,才能进行评论