求调(必关)
查看原帖
求调(必关)
1366699
programmer330楼主2024/11/6 19:27

100pta100pta 过不了 SubtaskSubtask 11

#include<bits/stdc++.h>
using namespace std;
int c[55],b[55];
int f[51][51][805];


int main(){
	int n,s=0;
	cin>>n;
	for(int i=1;i<=n;i++)cin>>c[i];
	for(int i=1;i<=n;i++)cin>>b[i],s+=b[i];
	for(int len=1;len<=n;len++){
		for(int i=1;i+len-1<=n;i++){
			int j=i+len-1;
			for(int k=0;k<=s;k++){
				f[i][j][k]=max(f[i][j][k],f[i][j-1][0]+(b[j]+k)*(b[j]+k));
			}
			for(int p=i;p<j-1;p++){
				if(c[p]==c[j]){
					for(int k=0;k<=s;k++){
						f[i][j][k]=max(f[i][j][k],f[i][p][k+b[j]]+f[p+1][j-1][0]);
					}
				}
			}
		}
	}
	cout<<f[1][n][0]<<endl;

	return 0;
}
2024/11/6 19:27
加载中...