QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#206430 | #6438. Crystalfly | wiseman123 | WA | 757ms | 11564kb | C++14 | 1.1kb | 2023-10-07 20:27:54 | 2023-10-07 20:27:55 |
Judging History
answer
#include <bits/stdc++.h>
#define INF 2e9
using namespace std;
const int MAXN=1e5+10;
vector<int>g[MAXN];
int n,u, v;
int a[MAXN];
int f[MAXN], sum[MAXN], t[MAXN];
void dfs(int u,int fa) {
int mx = 0;
multiset<int>st;//维护t[v] = 3的点的最大值
for (int v : g[u]) {
if (v == fa)continue;
dfs(v, u);
sum[u] += f[v];
mx = max(mx, a[v]);//找到a[v]的最大值
if (t[v] == 3)st.insert(a[v]);//把t[v] = 3 的点放进来
}
f[u] = sum[u] + mx;
st.insert(-INF);
for (int v : g[u]) {
if (v == fa)continue;
if (t[v] == 3)st.erase(st.find(a[v]));
f[u] = max(f[u],sum[u] - f[v] + a[v] + sum[v] + *st.rbegin());
if (t[v] == 3)st.insert(a[v]);//注意不要忘了添加回去
}
}
void slove() {
cin >> n;
for (int i = 1; i <= n; i++)g[i].clear(), f[i] = sum[i] = 0;
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 - 1; i++) {
cin >> u >> v;
g[u].push_back(v);
g[v].push_back(u);
}
dfs(1, 0);
cout << f[1] + a[1] << endl;
}
int main()
{
int t;
cin>>t;
while(t--)
{
slove();
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 6216kb
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: 6184kb
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: 232ms
memory: 7092kb
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: 232ms
memory: 7444kb
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: 597ms
memory: 11480kb
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: 757ms
memory: 11564kb
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:
-1509566961 -1932674673 -1539709020 1698731146 -1747141840 -1823223822 -1788996667 -1727266370 -1650706010 -1748061240
result:
wrong answer 1st numbers differ - expected: '35466839477975', found: '-1509566961'