0
已解决
#include <iostream>
#include <cstring>
using namespace std;
int n, ans, f[105][4];
struct node {
int x, y, z;
};
node a[105];
int dfs(int pos, int data) {
if(f[pos][data] != -1) return f[pos][data];
if(pos < 1 || pos > n) return 0;
node tmp = a[pos];
int area = 0;
if(data == 1) area = tmp.x*tmp.y;
if(data == 2) area = tmp.x*tmp.z;
if(data == 3) area = tmp.y*tmp.z;
// cout << pos << " " << data << endl;
int rest = 0;
for(int i=1; i<=n; i++) {
int a1 = a[i].x*a[i].y, a2 = a[i].x*a[i].z, a3 = a[i].z*a[i].y;
if(a1 > area)
rest = max(rest, dfs(i, 1));
if(a2 > area)
rest = max(rest, dfs(i, 2));
if(a3 > area)
rest = max(rest, dfs(i, 3));
}
if(data == 1) rest += tmp.z;
if(data == 2) rest += tmp.y;
if(data == 3) rest += tmp.x;
ans = max(ans, rest);
return f[pos][data] = rest;
}
int main() {
memset(f, -1, sizeof(f));
cin >> n;
for(int i=1; i<=n; i++) {
cin >> a[i].x >> a[i].y >> a[i].z;
}
// prepare();
dfs(n, 1);
dfs(n, 2);
dfs(n, 3);
cout << ans;
return 0;
}
挂的真惨,qp求助