쌍탑 문제

7997 단어 동적 기획
질문
마음대로
pp[i][j]는 전 i개이고 첫 번째 열은 두 번째 열보다 j의 첫 번째 열 높이가 높다.
그리고 첫 번째나 두 번째를 열거하거나 놓지 않으면 된다.
AC 코드:
#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include
//#define int long long
using namespace std;
const int N=2e4+10;
int dp[110][N],n,a[N],base=1e4;
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++)	cin>>a[i];
	memset(dp,0xcf,sizeof dp); dp[0][base]=0;
	for(int i=1;i<=n;i++){
		for(int j=a[i];j<=2e4;j++)	dp[i][j]=max(dp[i][j],dp[i-1][j-a[i]]+a[i]);
		for(int j=0;j<=2e4-a[i];j++)	dp[i][j]=max(dp[i][j],dp[i-1][j+a[i]]);
		for(int j=0;j<=2e4;j++)	dp[i][j]=max(dp[i][j],dp[i-1][j]);
	}
	cout<<dp[n][base];
	return 0;
}

좋은 웹페이지 즐겨찾기