rt,本人的代码:
#include<bits/stdc++.h>
using namespace std;
const int N=110,M=110,INF=(1ll<<31)-1;
int n,a[N],b[N],f[N][2*N*M],sum[N];
void solve(){
memset(sum,0,sizeof(sum));
memset(f,0x3f,sizeof(f));
int ans=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]),ans+=(n-1)*(a[i]*a[i]);
for(int i=1;i<=n;i++)scanf("%d",&b[i]),ans+=(n-1)*(b[i]*b[i]);
for(int i=1;i<=n;i++)sum[i]=sum[i-1]+a[i]+b[i];
f[0][0]=0;
for(int i=1;i<=n;i++)for(int j=max(a[i],b[i]);j<=sum[i];j++){
f[i][j]=min(f[i][j],f[i-1][j-a[i]]+a[i]*(j-a[i])+b[i]*(sum[i-1]-j+a[i]));
f[i][j]=min(f[i][j],f[i-1][j-b[i]]+b[i]*(j-b[i])+a[i]*(sum[i-1]-j+b[i]));
}
int t=INF;for(int i=0;i<=sum[n];i++)t=min(t,f[n][i]);ans+=2*t;
printf("%d\n",ans);
}
int main(){
int T;scanf("%d",&T);while(T--)solve();
return 0;
}
然而总是#5总是WA,上cf把数据搞下来跑一下发现输出的是对的,交上去的时候结果还是错的,与本地运行结果不一致。