dfs30求助(没过的TLE)
查看原帖
dfs30求助(没过的TLE)
1272259
cgxd楼主2024/6/22 16:20
#include<bits/stdc++.h>
using namespace std;
int n, m, ans, cnt[5];
vector<int> v;
void dfs(int x, int y, int sum){
	if(y == n - 1){
		ans = max(ans, sum);
		return;
	}if(y >= n or x > m)
		return;
	for(int i = 1; i <= 4; ++i){
		if(cnt[i] and y + i < n){
			--cnt[i];
			dfs(x + 1, y + i, sum + v[y + i]);
			++cnt[i];
		}else if(y + i >= n)
			return;
	}
}signed main(){
	cin >> n >> m;
	for(int i = 0; i < n; ++i){
		int k;
		scanf("%d", &k);
		v.push_back(k);
	}for(int i = 0; i < m; ++i){
		int k;
		scanf("%d", &k);
		++cnt[k];
	}dfs(0, 0, v[0]);
	cout << ans;
	return 0;
}
2024/6/22 16:20
加载中...