5000
1333 1
1333 2
1333 3
1333 4
1333 5
1333 6
1333 7
1333 8
1333 9
1333 10
1333 11
1333
<53788 bytes omitted>
用户输出
24975004
系统信息
Exited with return code 0
编号 | 题目 | 状态 | 分数 | 总时间 | 内存 | 代码 / 答案文件 | 提交者 | 提交时间 |
---|---|---|---|---|---|---|---|---|
#25335 | #1144. ddd和猴子 | Accepted | 100 | 1130 ms | 432184 K | C++ 11 / 1.8 K | 工业设计81 张泽论 | 2020-04-25 23:35:36 |
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<int> VI;
typedef pair<int, int> pii;
namespace IO {
template <typename T>
inline void read(T &x) {
x = 0;
ll f = 1;
char ch = getchar();
while (!isdigit(ch)) {
if (ch == '-')
f = -f;
ch = getchar();
}
while (isdigit(ch)) {
x = x * 10 + ch - 48;
ch = getchar();
}
x = x * f;
}
} // namespace IO
using namespace IO;
const int maxn = 5000 + 10;
VI G[maxn];
int n;
void addedge(int x, int y) { G[x].push_back(y), G[y].push_back(x); }
ll unused[maxn][maxn << 1];
ll unused2[maxn][maxn << 1];
ll *dp[maxn];
ll *dp2[maxn];
ll siz[maxn];
int color[maxn];
const ll INF = 100000000000000ll;
void pre(int u, int fa, int c) {
color[u] = c;
for (int i = 0; i < G[u].size(); i++) {
int v = G[u][i];
if (v == fa)
continue;
pre(v, u, -c);
}
}
ll ans = -INF;
void dfs(int u, int fa) {
ans = -INF;
siz[u] = 1;
for (int k = -siz[u]; k <= siz[u]; k++) dp[u][k] = -INF;
dp[u][color[u]] = 0;
for (int i = 0; i < G[u].size(); i++) {
int v = G[u][i];
if (v == fa)
continue;
dfs(v, u);
for (int k = -siz[u] - siz[v]; k <= siz[u] + siz[v]; k++) dp2[u][k] = -INF;
for (int k = -siz[u]; k <= siz[u]; k++)
for (int j = -siz[v]; j <= siz[v]; j++) dp2[u][k + j] = max(dp[u][k] + dp[v][j], dp2[u][k + j]);
siz[u] += siz[v];
for (int k = -siz[u]; k <= siz[u]; k++) dp[u][k] = dp2[u][k];
}
for (int k = -siz[u]; k <= siz[u]; k++) ans = max(ans, dp[u][k] + k * k);
dp[u][0] = ans;
}
int main() {
read(n);
for (int i = 1; i <= n; i++) dp[i] = unused[i] + maxn;
for (int i = 1; i <= n; i++) dp2[i] = unused2[i] + maxn;
for (int i = 1; i < n; i++) {
int x, y;
read(x), read(y);
addedge(x, y);
}
pre(1, 1, 1);
dfs(1, 1);
cout << ans - n;
return 0;
}
5000
1333 1
1333 2
1333 3
1333 4
1333 5
1333 6
1333 7
1333 8
1333 9
1333 10
1333 11
1333
<53788 bytes omitted>
用户输出
24975004
系统信息
Exited with return code 0
5000
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11
11 12
12 13
13 14
14 15
15 16
16 17
<52684 bytes omitted>
用户输出
0
系统信息
Exited with return code 0
5000
1 2
1 3
2 4
2 5
3 6
3 7
4 8
4 9
5 10
5 11
6 12
6 13
7 14
7 15
8 16
8 17
9 18
<51577 bytes omitted>
用户输出
1859130
系统信息
Exited with return code 0
5000
1 4514
2 4514
3 4514
4 4514
5 4514
6 4514
7 4514
8 4514
9 4514
10 4514
11 4514
12 4
<52679 bytes omitted>
用户输出
16339208
系统信息
Exited with return code 0
5000
1 1926
2 1926
3 1926
4 1926
5 1926
6 1926
7 1926
8 1926
9 1926
10 1926
11 1926
12 1
<52679 bytes omitted>
用户输出
15112652
系统信息
Exited with return code 0
5000
2 1
3 1
4 3
5 3
6 5
7 5
8 3
9 1
10 7
11 2
12 5
13 6
14 8
15 13
16 13
17 7
18 8
<50535 bytes omitted>
用户输出
1697850
系统信息
Exited with return code 0
5000
2 1
3 1
4 3
5 4
6 3
7 1
8 4
9 1
10 8
11 7
12 9
13 7
14 8
15 11
16 4
17 1
18 5
<50582 bytes omitted>
用户输出
1766244
系统信息
Exited with return code 0
5000
2 1
3 1
4 3
5 4
6 2
7 6
8 6
9 7
10 1
11 7
12 10
13 1
14 8
15 2
16 7
17 13
18 1
<50545 bytes omitted>
用户输出
1817208
系统信息
Exited with return code 0