全WA求调,用DP
查看原帖
全WA求调,用DP
1152177
Kuromi0212楼主2024/5/20 16:25
#include<bits/stdc++.h>
using namespace std;
const int maxn=355;
int n,m,a[maxn],ka=0,kb=0,kc=0,kd=0,f[50][50][50][50];
int main(){
	cin>>n>>m;
	memset(f,0,sizeof(f));
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	int x;
	for(int i=1;i<=m;i++){
		cin>>x;
		if(x==1){
			ka+=1;
		}
		if(x==2){
			kb+=1;
		}
		if(x==3){
			kc+=1;
		}
		if(x==4){
			kd+=1;
		}
	}
	int ls=0;
	for(int i=0;i<=ka;i++){
		for(int j=0;j<=kb;j++){
			for(int k=0;k<=kc;k++){
				for(int v=0;v<=kd;v++){
					ls=i*1+j*2+k*3+v*4+1;
					if(i>=1){
						f[i][j][k][v]=max(f[i][j][k][v],f[i-1][j][k][v]+a[ls]);
					}
					if(j>=1){
						f[i][j][k][v]=max(f[i][j][k][v],f[i][j-1][k][v]+a[ls]);
					}
					if(k>=1){
						f[i][j][k][v]=max(f[i][j][k][v],f[i][j][k-1][v]+a[ls]);
					}
					if(v>=1){
						f[i][j][k][v]=max(f[i][j][k][v],f[i][j][k][v-1]+a[ls]);
					}
				}
			}
		}
	}
	cout<<f[ka][kb][kc][kd];
}
2024/5/20 16:25
加载中...