请求加强数据
查看原帖
请求加强数据
556851
M_CI楼主2023/10/10 21:29

下面的代码只平移了40000,数组也只开了80000,都少了个零,但A了。

#include <bits/stdc++.h>
using namespace std;
#define f(i,a,b) for (int i=a;i<=b;i++)
#define rf(i,a,b) for (int i=a;i>=b;i--)

int n,ans=0xc0c0c0c0,s[410],f[410],dp[80010];

int main () {
	cin>> n;
	f (i,1,n)
		cin>> s[i]>> f[i];
	memset (dp,0xc0,sizeof dp);
	dp[40000]=0;
	f (i,1,n) {
		if (s[i]>=0) {
			rf (j,80000,s[i])
				dp[j]=max (dp[j],dp[j-s[i]]+f[i]);
		} else {
			f (j,0,80000+s[i])
				dp[j]=max (dp[j],dp[j-s[i]]+f[i]);
		}
	}
	f (i,40000,80000)
		if (dp[i]>=0)
			ans=max (ans,dp[i]+i-40000);
	cout<< ans;
	return 0;
}
2023/10/10 21:29
加载中...