玄关 WA 10pts求调
查看原帖
玄关 WA 10pts求调
881733
AZYDLL楼主2024/7/30 12:02

样例过了,题解也看了,思路基本一样,但是交上去只有十分

测评记录

代码:

#include<iostream>
#include<algorithm>
#define MAXM 200005
#define MAXN 105

using namespace std;

int n,w[MAXN],sum,dp[MAXM],dp1[MAXM],dp2[MAXM];

bool cmp(int a,int b){return a>b;}

int main()
{
	cin>>n;
	for(int i=1;i<=n;i++) cin>>w[i],sum+=w[i];
	sort(w+1,w+1+n,cmp);
	
	dp[0]=1;
	for(int i=1;i<=n;i++){
		for(int j=0;j<=sum;j++) dp1[j]=dp[j];
		for(int j=sum;j>=w[i];j--) dp1[j]=max(dp1[j],dp[j-w[i]]);
		
		for(int j=0;j<=sum;j++) dp2[j]=dp[j];
		for(int j=0;j<=sum-w[i];j++) dp2[j]=max(dp2[j],dp[j+w[i]]);
		
		for(int j=0;j<=sum;j++) dp[j]=max(dp[j],max(dp1[j],dp2[j]));
	}
	
	int cnt=0;
	for(int i=1;i<=sum;i++) cnt+=dp[i];
	cout<<cnt<<endl;
	
	return 0;
}
2024/7/30 12:02
加载中...