rt,我第一次写时打了一个暴力程序,理论复杂度O(n2×2n2),大概是O(1032),但是居然可以获得 84pts。这就是远古联考题的实力吗
附代码 :
#include <bits/stdc++.h>
using namespace std;
const int N = 10;
int dp[N][N], h[N*N][N*N], v[N*N], n, tot, ans = -1e9;
bool vis[N*N];
inline int Ans(int m)
{
memset(dp, 0, sizeof(dp));
for(int i = 1;i <= n;++i)
{
for(int j = 1;j <= n;++j)
{
dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
if(vis[h[i][j]] && m || !vis[h[i][j]] && !m)
dp[i][j] += v[h[i][j]];
}
}
return dp[n][n];
}
inline void dfs(int cur)
{
ans = max(ans, Ans(0)+Ans(1));
for(int i = cur;i <= tot;++i)
{
vis[i] = 1;
dfs(i+1);
vis[i] = 0;
}
}
int main()
{
cin >> n;
int x, y, z;
cin >> x >> y >> z;
while(x || y || z)
{
v[++tot] = z;
h[x][y] = tot;
cin >> x >> y >> z;
}
dfs(1);
cout << ans;
return 0;
}