QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#233171 | #6438. Crystalfly | zGoofy | WA | 759ms | 11116kb | C++14 | 1.6kb | 2023-10-31 14:35:57 | 2023-10-31 14:35:59 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
void solve() {
int n; cin >> n;
vector<int>edge[n + 1],a(n + 1), f(n + 1), g(n + 1), h(n + 1), t(n + 1);
for(int i = 1; i <= n; i++) {
cin >> a[i];
}
for(int i = 1; i <= n; i++) {
cin >> t[i];
}
for(int i = 1; i < n; i++) {
int u, v; cin >> u >> v;
edge[u].push_back(v);
edge[v].push_back(u);
}
function<void(int, int)>dfs = [&](int u, int fa) {
h[u] = a[u];
int first = -1, second = -1, mx = 0, sumg = 0;
for(auto v : edge[u]) {
if(v == fa) continue;
dfs(v, u);
sumg += g[v];
mx = max(mx, a[v]);
if(t[v] == 3) {
if(a[v] > first) {
second = first;
first = a[v];
} else {
second = max(second, a[v]);
}
}
}
g[u] = sumg + mx;
h[u] += sumg;
if(first != -1)
for(auto v : edge[u]) {
if(v == fa) continue;
if(first == a[v] && t[v] == 3) {
if(second == -1) continue;
g[u] = max(g[u], h[v] + sumg + second - g[v]);
} else {
g[u] = max(g[u], h[v] + sumg + first - g[v]);
}
}
f[u] = g[u] + a[u];
};
dfs(1, 0);
cout << f[1] << endl;
}
signed main() {
// ios::sync_with_stdio(false);
int tt = 1;
cin >> tt;
while (tt--) {
solve();
}
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3792kb
input:
2 5 1 10 100 1000 10000 1 2 1 1 1 1 2 1 3 2 4 2 5 5 1 10 100 1000 10000 1 3 1 1 1 1 2 1 3 2 4 2 5
output:
10101 10111
result:
ok 2 number(s): "10101 10111"
Test #2:
score: 0
Accepted
time: 0ms
memory: 3820kb
input:
10 6 8 1 1 5 8 9 2 1 2 2 2 2 1 2 2 3 2 4 1 5 2 6 6 6 4 4 1 3 6 2 1 3 3 3 3 1 2 1 3 3 4 4 5 5 6 6 10 5 1 8 5 1 1 3 1 2 2 2 1 2 2 3 2 4 2 5 3 6 10 6 8 8 9 6 9 5 6 6 4 2 1 3 3 2 2 2 2 3 1 1 2 1 3 3 4 4 5 5 6 4 7 2 8 7 9 9 10 7 10 9 1 5 7 5 4 1 1 1 2 1 3 2 1 2 1 3 3 4 3 5 5 6 1 7 5 7 1 1 4 2 3 1 3 2 2 1...
output:
25 24 24 56 31 14 16 28 19 19
result:
ok 10 numbers
Test #3:
score: 0
Accepted
time: 279ms
memory: 3824kb
input:
100000 10 9 1 7 9 5 1 10 5 3 8 2 1 1 3 1 2 2 3 3 1 1 2 2 3 3 4 1 5 2 6 2 7 6 8 7 9 7 10 3 6 6 1 2 1 2 1 2 1 3 10 6 5 3 7 1 5 1 9 7 3 3 1 3 3 1 3 2 2 2 3 1 2 1 3 3 4 4 5 2 6 6 7 4 8 7 9 1 10 7 2 8 9 7 7 9 10 2 3 2 2 3 2 1 1 2 2 3 1 4 3 5 4 6 3 7 1 8 1 1 4 2 7 9 9 9 8 4 2 7 3 1 2 1 1 1 1 1 2 2 3 2 4 3...
output:
49 12 41 45 8 4 38 22 20 21 5 19 23 44 26 5 21 28 28 32 36 15 5 26 38 36 20 35 27 36 20 9 32 32 22 11 41 15 20 54 38 20 45 36 20 29 24 4 37 44 30 45 17 17 36 29 3 6 24 44 25 28 50 13 5 1 44 27 17 21 15 17 17 24 29 39 10 39 38 26 22 24 9 17 41 7 28 33 51 18 14 14 7 35 23 13 11 43 30 24 35 2 43 33 17 ...
result:
ok 100000 numbers
Test #4:
score: 0
Accepted
time: 258ms
memory: 3820kb
input:
1000 420 4 7 10 4 6 9 7 9 3 5 3 10 7 2 8 4 4 7 9 4 3 7 1 10 1 5 4 5 3 9 6 4 2 8 7 1 1 10 2 2 2 4 2 1 3 2 4 8 2 1 6 3 2 5 4 9 9 9 5 9 5 2 2 5 4 2 10 9 1 10 7 4 8 4 10 10 6 2 10 2 3 2 6 2 3 3 2 9 8 5 3 1 6 3 4 5 6 1 7 6 10 7 7 8 2 6 10 10 9 8 6 2 9 7 7 10 4 5 9 2 10 9 9 10 1 5 1 6 1 1 4 8 2 5 7 7 4 10...
output:
1633 2047 3251 576 3701 2231 700 2254 105 1518 3179 914 1396 2417 2019 3397 3013 3659 443 2773 3354 110 3445 888 2380 1525 2881 1841 1969 810 752 1026 1794 3273 3021 2011 3307 3832 95 51 3731 1374 2842 1675 1960 1118 431 2199 2747 3882 1305 971 1490 3028 908 73 2376 1341 1821 3565 721 3195 2388 266 ...
result:
ok 1000 numbers
Test #5:
score: 0
Accepted
time: 604ms
memory: 11116kb
input:
10 99991 10 6 5 5 7 1 4 5 2 3 9 5 4 9 2 10 8 3 6 9 4 4 4 2 10 8 8 4 8 5 10 6 8 9 2 5 6 10 9 8 2 1 2 6 9 10 7 1 8 1 8 3 5 3 9 8 2 8 1 3 7 3 5 3 1 10 8 1 3 10 6 7 5 3 10 6 10 6 5 5 2 5 1 8 4 4 8 6 8 7 4 1 3 1 10 2 3 5 2 6 10 4 1 6 1 10 5 4 2 8 8 6 9 6 5 8 10 8 2 4 8 2 2 7 9 5 7 8 9 2 9 10 3 9 1 9 6 7 ...
output:
385673 385638 385999 385351 383937 385702 384372 386280 385985 383976
result:
ok 10 numbers
Test #6:
score: -100
Wrong Answer
time: 759ms
memory: 11004kb
input:
10 100000 691638189 376118101 486584606 394669567 486373897 939526687 503807724 278251188 231412672 45682405 745048495 28500413 156838889 12700279 797455152 755903587 326532893 701805548 78389204 486114025 367059077 361684203 829984938 129623201 460608105 143355017 412267713 65576852 778434431 93425...
output:
-1599646120 1469957838 -1760463872 2128660823 1843938232 -1636718824 2062655782 -1303292592 -1939853281 -1775306267
result:
wrong answer 1st numbers differ - expected: '35466839477975', found: '-1599646120'