救救蒟蒻
查看原帖
救救蒟蒻
312121
shimao楼主2021/2/1 21:32
#include<bits/stdc++.h>
using namespace std;
int F[41][41][41][41];
int n,m,a[1000],b[5];
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>a[i];
	F[0][0][0][0]=a[1];
	for(int i=1;i<=m;i++){
		int c;cin>>c;
		b[c]++;
	}
	
	for(int i=0;i<=b[1];i++)
		for(int j=0;j<=b[2];j++)
			for(int k=0;k<=b[3];k++)
				for(int l=0;l<=b[4];l++){
					int t=a[1+i+2*j+3*k+4*l];
					if(i)F[i][k][k][l]=max(F[i-1][j][k][l]+t,F[i][j][k][l]);
					if(j)F[i][j][k][l]=max(F[i][j-1][k][l]+t,F[i][j][k][l]);
					if(k)F[i][j][k][l]=max(F[i][j][k-1][l]+t,F[i][j][k][l]);
					if(l)F[i][j][k][l]=max(F[i][j][k][l-1]+t,F[i][j][k][l]);
				}
	cout<<F[b[1]][b[2]][b[3]][b[4]];
	return 0;
}

就过了样例

2021/2/1 21:32
加载中...