QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#407019 | #6659. 외곽 순환 도로 2 | hotboy2703 | 0 | 56ms | 35844kb | C++14 | 4.0kb | 2024-05-07 21:16:52 | 2024-08-26 15:52:49 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
#define BIT(mask,i) (((mask) >> (i))&1LL)
#define MASK(i) (1LL << (i))
#define MP make_pair
#define pll pair <ll,ll>
#define fi first
#define se second
#define sz(a) (ll((a).size()))
namespace {
const ll MAXN=1e5;
const ll INF = 1e18;
pll leaf[MAXN+100];
ll dp[MAXN+100][2][2][2];
ll cost[MAXN+100];
ll w[MAXN+100];
vector <ll> g[MAXN+100];
ll ptr_leaf;
vector <ll> W_leaf;
bool color[MAXN+100];
void dfs_init(ll u){
for (auto v:g[u]){
color[v] = 1-color[u];
dfs_init(v);
if (leaf[u].fi==0)leaf[u].fi = leaf[v].fi;
leaf[u].se = leaf[v].se;
}
if (sz(g[u])==0){
leaf[u] = MP(u,u);
cost[u] = W_leaf[ptr_leaf++];
}
}
void dfs_solve(ll u){
bool true_leaf = 1;
ll last = -1;
for (auto v:g[u]){
dfs_solve(v);
if (true_leaf){
for (ll i = 0;i < 2;i ++)for (ll j = 0;j < 2;j ++)for (ll k = 0;k < 2;k ++)dp[u][i][j][k] = dp[v][i][j][k];
for (ll i = 0;i < 2;i ++)for (ll j = 0;j < 2;j ++)for (ll k = 0;k < 2;k ++){
dp[u][0][0][k] = min(dp[u][0][0][k],dp[v][i][j][k] + w[v]);
}
}
else{
ll tmp[2][2][2];
for (ll i1 = 0;i1 < 2;i1 ++)for (ll j1 = 0;j1 < 2;j1 ++)for (ll k1 = 0;k1 < 2;k1 ++)tmp[i1][j1][k1] = INF;
for (ll i1 = 0;i1 < 2;i1 ++)for (ll j1 = 0;j1 < 2;j1 ++)for (ll k1 = 0;k1 < 2;k1 ++){
for (ll i2 = 0;i2 < 2;i2 ++)for (ll j2 = 0;j2 < 2;j2 ++)for (ll k2 = 0;k2 < 2;k2 ++){
if (!(i2 && j1 && (color[last] == color[leaf[v].fi])))tmp[i1][j2][k1&&k2] = min(tmp[i1][j2][k1&&k2],dp[u][i1][j1][k1] + dp[v][i2][j2][k2]);
tmp[i1][0][k1&&k2] = min(tmp[i1][0][k1&&k2],dp[u][i1][j1][k1] + dp[v][i2][j2][k2] + w[v]);
// if (k1 &&k2==0 && tmp[i1][j2][0] != INF && tmp[i1][j2][0] != 9){
// cout<<"BRUH "<<i1<<' '<<j2<<' '<<0<<' '<<tmp[i1][j2][0]<<endl;
// cout<<k1<<' '<<k2<<' '<<dp[u][i1][j1][k1] + dp[v][i2][j2][k2] + (i2 && j1 && (color[last] == color[leaf[v].fi])) * w[v]<<' '<<dp[u][i1][j1][k1]<<' '<<dp[v][i2][j2][k2]<<'\n';
// assert(0);
// }
tmp[i1][j2][0] = min(tmp[i1][j2][0],dp[u][i1][j1][k1] + dp[v][i2][j2][k2] + cost[last]);
tmp[i1][0][0] = min(tmp[i1][0][0],dp[u][i1][j1][k1] + dp[v][i2][j2][k2] + cost[last] + w[v]);
// if (cost[last] != 9){
// cout<<last<<' '<<cost[last]<<endl;
// assert(0);
// }
}
}
for (ll i1 = 0;i1 < 2;i1 ++)for (ll j1 = 0;j1 < 2;j1 ++)for (ll k1 = 0;k1 < 2;k1 ++)dp[u][i1][j1][k1] = tmp[i1][j1][k1];
}
last = leaf[v].se;
true_leaf = 0;
}
if (true_leaf){
for (ll i1 = 0;i1 < 2;i1 ++)for (ll j1 = 0;j1 < 2;j1 ++)for (ll k1 = 0;k1 < 2;k1 ++)dp[u][i1][j1][k1] = INF;
dp[u][1][1][1] = 0;
}
// for (ll i = 0;i < 2;i ++)for (ll j = 0;j < 2;j ++)for (ll k = 0;k < 2;k ++)cout<<"DP "<<u<<' '<<i<<' '<<j<<' '<<k<<" = "<<dp[u][i][j][k]<<'\n';
// cout<<'\n';
}
}
long long place_police(vector<int> P, vector<long long> C, vector<long long> W){
W_leaf = W;
ll n = sz(P) + 1;
for (ll i = 0;i < n - 1;i ++){
ll u = i + 2;
ll v = P[i] + 1;
g[v].push_back(u);
}
for (ll i = 0;i < n - 1;i ++){
w[i+2] = C[i];
}
dfs_init(1);
dfs_solve(1);
ll res = INF;
// cout<<cost[leaf[1].se]<<endl;
for (ll i = 0;i < 2;i ++)for (ll j = 0;j < 2;j ++)for (ll k = 0;k < 2;k ++)res = min(res,dp[1][i][j][k] + ((i&&j&&(color[leaf[1].fi] == color[leaf[1].se]))||(k && sz(W) % 2))*cost[leaf[1].se]);
return res;
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 6
Accepted
time: 2ms
memory: 10756kb
input:
5 0 452912 0 820899 0 79369 0 232463 1000000000000 1000000000000 1000000000000 1000000000000
output:
532281
result:
ok single line: '532281'
Test #2:
score: 6
Accepted
time: 1ms
memory: 10656kb
input:
6 0 581451 0 68556 0 918465 0 661406 0 41816 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000
output:
1000000110372
result:
ok single line: '1000000110372'
Test #3:
score: 6
Accepted
time: 1ms
memory: 10004kb
input:
4 0 0 0 0 0 0 0 0 0
output:
0
result:
ok single line: '0'
Test #4:
score: 6
Accepted
time: 1ms
memory: 10456kb
input:
5 0 938777585449 0 576051802364 0 418735407836 0 823692221300 233950071687 338912182863 866023804654 680391493800
output:
1333076973323
result:
ok single line: '1333076973323'
Test #5:
score: 6
Accepted
time: 1ms
memory: 10768kb
input:
6 0 938777585449 0 576051802364 0 418735407836 0 823692221300 0 233950071687 338912182863 866023804654 680391493800 876313612238 476765859230
output:
991597662386
result:
ok single line: '991597662386'
Test #6:
score: 6
Accepted
time: 12ms
memory: 35844kb
input:
99995 0 573954 1 101503 2 350026 3 832411 4 311022 5 583957 6 894954 7 223392 8 287704 9 259600 10 964702 11 24863 12 831166 13 754666 14 96743 15 606341 16 198920 17 262280 18 610409 19 193417 20 192417 21 194438 22 244016 23 680809 24 106449 25 249873 26 41805 27 375383 28 927874 29 148386 30 1354...
output:
3
result:
ok single line: '3'
Test #7:
score: 6
Accepted
time: 11ms
memory: 28184kb
input:
99995 0 573954 1 101503 2 350026 3 832411 4 311022 5 583957 6 894954 7 223392 8 287704 9 259600 10 964702 11 24863 12 831166 13 754666 14 96743 15 606341 16 198920 17 262280 18 610409 19 193417 20 192417 21 194438 22 244016 23 680809 24 106449 25 249873 26 41805 27 375383 28 927874 29 148386 30 1354...
output:
0
result:
ok single line: '0'
Test #8:
score: 6
Accepted
time: 19ms
memory: 35668kb
input:
99995 0 573954 1 101503 2 350026 3 832411 4 311022 5 583957 6 894954 7 223392 8 287704 9 259600 10 964702 11 24863 12 831166 13 754666 14 96743 15 606341 16 198920 17 262280 18 610409 19 193417 20 192417 21 194438 22 244016 23 680809 24 106449 25 249873 26 41805 27 375383 28 927874 29 148386 30 1354...
output:
3
result:
ok single line: '3'
Test #9:
score: 0
Wrong Answer
time: 16ms
memory: 28260kb
input:
99995 0 573954 1 101503 2 350026 3 832411 4 311022 5 583957 6 894954 7 223392 8 287704 9 259600 10 964702 11 24863 12 831166 13 754666 14 96743 15 606341 16 198920 17 262280 18 610409 19 193417 20 192417 21 194438 22 244016 23 680809 24 106449 25 249873 26 41805 27 375383 28 927874 29 148386 30 1354...
output:
38
result:
wrong answer 1st lines differ - expected: '50', found: '38'
Subtask #2:
score: 0
Wrong Answer
Test #28:
score: 0
Wrong Answer
time: 56ms
memory: 21068kb
input:
99997 0 122727 0 267270 0 846212 0 454122 0 805668 0 614161 0 7805 0 173284 0 684707 0 269129 0 930945 0 1101 0 992427 0 297412 0 759787 0 227130 0 120418 0 90914 0 333684 0 46144 0 519912 0 171490 0 823586 0 121787 0 674177 0 560254 0 753090 0 853359 0 465464 0 655527 0 631303 0 919012 0 597126 0 1...
output:
20632254883
result:
wrong answer 1st lines differ - expected: '24980330181', found: '20632254883'
Subtask #3:
score: 0
Wrong Answer
Test #36:
score: 5
Accepted
time: 0ms
memory: 11728kb
input:
11 0 9 0 8 2 0 3 7 3 1 2 6 0 0 7 7 7 1 9 6 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000
output:
1
result:
ok single line: '1'
Test #37:
score: 0
Wrong Answer
time: 5ms
memory: 17400kb
input:
50311 0 630582 1 458618 2 300543 3 566041 4 306718 5 134260 6 736322 7 458543 8 609374 9 355623 10 706939 11 48588 12 455725 13 105118 14 71071 15 528699 16 423538 17 471781 18 98063 19 169099 20 657181 21 295537 22 49937 23 306612 24 186582 25 505763 26 831500 27 406268 28 294626 29 128111 30 42115...
output:
427455
result:
wrong answer 1st lines differ - expected: '813491', found: '427455'
Subtask #4:
score: 0
Skipped
Dependency #3:
0%
Subtask #5:
score: 0
Wrong Answer
Test #77:
score: 0
Wrong Answer
time: 3ms
memory: 15384kb
input:
50311 0 962897543825 1 887020369743 2 363658802934 3 481009844166 4 1099712574 5 858320882162 6 521927434762 7 379344260539 8 73024776148 9 634183458545 10 869560347910 11 81581323331 12 750044298516 13 307013017409 14 306226274039 15 423923546601 16 482114694167 17 849292461119 18 299993045938 19 7...
output:
619471179450
result:
wrong answer 1st lines differ - expected: '939418184213', found: '619471179450'
Subtask #6:
score: 0
Skipped
Dependency #1:
0%