P2409 Y的积木

luogu月赛
暴力dfs,估计过不了几个点,大概也就得30分左右?

#include <bits/stdc++.h>
using namespace std;
const int maxn = 55;
int jimu[maxn][maxn];
int cnt = 0;
int ans[maxn];
int n, k;
int aa[100];
int mi[maxn];
//------------
void dfs(int picked) {
	if(picked == n) {
		int sum = 0;
		for(int i = 0; i < n; i++) sum += ans[i];
		aa[cnt++] = sum;
		return;	
	}
	int now = picked;
	for(int i = 0; i < mi[now]; i++) {
		ans[now] = jimu[now][i];
		dfs(now+1);
	}
}
//------------
int main() {
	cin >> n >> k;
	for(int i = 0; i < n; i++) {
		cin >> mi[i];
		for (int j = 0; j < mi[i]; ++j)
		{
			cin >> jimu[i][j];
		}
		sort(jimu[i], jimu[i]+mi[i]);
	}
	dfs(0);
	sort(aa, aa+cnt);
	for (int i = 0; i < k; ++i)
	{
		cout << aa[i] << ' ';
	}
	return 0;
}
原文地址:https://www.cnblogs.com/gengchen/p/6011267.html