P7535 [COCI2016-2017#4] Kas 题解
校内模拟赛的题
思路
看到这道题可以很快想出一个
但是这样空间要开到
注意到每次转移第一维只从
代码
#include<bits/stdc++.h>
using namespace std;
int n,a[600],dp[505][100005],tot,now;
int main(){
memset(dp,-0x7f,sizeof(dp));
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
tot+=a[i];
}
dp[0][0]=0;
for(int i=1;i<=n;i++){
for(int j=0;j<=tot;j++){
dp[i][j]=max(dp[i-1][j],max(dp[i-1][j+a[i]]+a[i],dp[i-1][abs(j-a[i])]+a[i]));
}
}
cout<<tot-dp[n][0]/2;
return 0;
}