为什么 CE
查看原帖
为什么 CE
482610
Mortidesperatslav楼主2024/3/19 20:20
#include<bits/stdc++.h>
using namespace std;
int n, m;
int a[154 << 2], b[154], buk[5], f[351][41][41][41][41];
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	cin >> n >> m;
	for (int i = 1; i <= n; i++)
		cin >> a[i];
	for (int j = 1; j <= m; j++){
		cin >> b[j];
		buk[b[j]]++;
	}
	memset(f, -1, sizeof f);
	f[1][0][0][0][0] = a[1];
	for (int i = 2; i <= n; i++)
		for (int j = 1; j <= buk[1]; j++)
			for (int k = 1; k <= buk[2]; k++)
				for (int l = 1; l <= buk[3]; l++)
					for (int o = 1; o <= buk[4]; o++){
						if (f[i - 1][j - 1][k][l][o] != -1)
							f[i][j][k][l][o] = max(f[i][j][k][l][o], f[i - 1][j - 1][k][l][o] + a[i]);
						if (f[i - 2][j][k - 1][l][o] != -1 && i > 2)
							f[i][j][k][l][o] = max(f[i][j][k][l][o], f[i - 2][j][k - 1][l][o] + a[i]);
						if (f[i - 3][j][k][l - 1][o] != -1 && i > 3)
							f[i][j][k][l][o] = max(f[i][j][k][l][o], f[i - 4][j][k][l - 1][o] + a[i]);
						if (f[i - 4][j][k][l][o - 1] != -1 && i > 4)
							f[i][j][k][l][o] = max(f[i][j][k][l][o], f[i - 4][j][k][l][o - 1] + a[i]);
					}
	cout << f[n][buk[1]][buk[2]][buk[3]][buk[4]];
}
2024/3/19 20:20
加载中...