洛谷 P1504 积木城堡

时间:2023-03-10 05:31:02
洛谷 P1504 积木城堡

题目传送门

解题思路:

01背包.

AC代码:

 #include<iostream>
#include<cstdio>
#include<vector> using namespace std; int n,sum[],id,_min = ;
vector<int> a[];
bool f[][]; int main() {
scanf("%d",&n);
for(int i = ;i <= n; i++) {
while(true) {
int u;
scanf("%d",&u);
if(u == -) break;
a[i].push_back(u);
sum[i] += u;
}
if(_min > sum[i]) {
_min = sum[i];
id = i;
}
f[i][] = ;
}
for(int i = ;i <= n; i++)
for(int j = ;j < a[i].size(); j++)
for(int k = sum[i];k >= a[i][j]; k--)
f[i][k] = f[i][k] | f[i][k - a[i][j]];
_min++;
while(_min--) {
bool flag = ;
for(int j = ;j <= n; j++)
if(!f[j][_min])
flag = ;
if(flag) {
printf("%d",_min);
return ;
}
}
printf("");
return ;
}