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;
}
上一篇:python 文件路径名,文件名,后缀名的操作


下一篇:Shell获取文件的文件名和扩展名的例子