关于初始化
查看原帖
关于初始化
1025958
511_Juruo_wyk楼主2024/3/31 10:08

这是我的代码,WA #2 #4

#include<bits/stdc++.h>
using namespace std;
const int N = 105,M = 1e3+5;
int dp[N][N*M],a[N],b[N];
int p[N],q[N],sa[N],sb[N];
int n,m,k,c,sum,ans=INT_MIN;
int main(){
	cin>>n>>m>>k>>c;
//	memset(dp,-1,sizeof(dp));
	for(int i=1;i<=n;i++)scanf("%d",&a[i]);
	for(int i=1;i<=n;i++)scanf("%d",&b[i]);
	for(int i=1;i<=m;i++){
		scanf("%d %d",&p[i],&q[i]);
		sa[i]=a[p[i]]*a[q[i]];
		sb[i]=b[p[i]]+b[q[i]];
		sum+=sb[i];
	}
	for(int i=1;i<=m;i++)
		for(int j=i;j>=1;j--)
			for(int k=sum;k>=sb[i];k--)
				dp[j][k]=max(dp[j][k],dp[j-1][k-sb[i]]+sa[i]);
	for(int i=c;i<=sum;i++)
		ans=max(ans,dp[k][i]);
	cout<<(ans==INT_MIN?-1:ans);
	return 0;
}

初始化 −1-1 之后样例不过,但是我看题解区有人说要初始化负无穷大,我试了下发现更过不了,有没有人知道为什么,谢谢

2024/3/31 10:08
加载中...