feat: g
This commit is contained in:
parent
3e46a241a1
commit
579760f0f8
3 changed files with 23 additions and 12 deletions
|
|
@ -41,3 +41,4 @@ CompileFlags:
|
||||||
-e -std=c++23
|
-e -std=c++23
|
||||||
-e -std=c++23
|
-e -std=c++23
|
||||||
-e -std=c++23
|
-e -std=c++23
|
||||||
|
-e -std=c++23
|
||||||
|
|
|
||||||
|
|
@ -67,26 +67,36 @@ void solve() {
|
||||||
tree[i].push_back(a);
|
tree[i].push_back(a);
|
||||||
tree[a].push_back(i);
|
tree[a].push_back(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
string s;
|
string s;
|
||||||
cin >> s;
|
cin >> s;
|
||||||
s = ' ' + s;
|
s = ' ' + s;
|
||||||
|
|
||||||
auto dfs = [&](auto&& self, u32 u, u32 p) -> vec<u32> {
|
vec<vec<u32>> dp(n + 1, vec<u32>(2));
|
||||||
vec<u32> dp(2);
|
|
||||||
dp[0] = (s[u] == 'P') ? 1 << 30 : 0;
|
auto dfs = [&](auto&& self, u32 u, u32 p) -> void {
|
||||||
dp[1] = (s[u] == 'S') ? 1 << 30 : 0;
|
u32 sleepCost = (s[u] == 'P') ? MAX<u64> : 0;
|
||||||
|
u32 partyCost = (s[u] == 'S') ? MAX<u64> : 0;
|
||||||
|
|
||||||
for (u32 v : tree[u]) {
|
for (u32 v : tree[u]) {
|
||||||
if (v == p)
|
if (v == p) {
|
||||||
continue;
|
continue;
|
||||||
auto prev = self(self, v, u);
|
}
|
||||||
dp[0] += min(prev[0], prev[1] + 1);
|
|
||||||
dp[1] += min(prev[1], prev[0] + 1);
|
self(self, v, u);
|
||||||
|
u32 bestChild = min(dp[v][0], dp[v][1]);
|
||||||
|
u32 cutCost = (bestChild == MAX<u64>) ? MAX<u64> : bestChild + 1;
|
||||||
|
|
||||||
|
sleepCost += min(dp[v][0], cutCost);
|
||||||
|
partyCost += min(dp[v][1], cutCost);
|
||||||
}
|
}
|
||||||
return dp;
|
|
||||||
|
dp[u][0] = sleepCost;
|
||||||
|
dp[u][1] = partyCost;
|
||||||
};
|
};
|
||||||
|
|
||||||
auto ans = dfs(dfs, 1, 0);
|
dfs(dfs, 1, 0);
|
||||||
cout << *min_element(all(ans)) << '\n';
|
cout << *min_element(all(dp[1])) << '\n';
|
||||||
}
|
}
|
||||||
|
|
||||||
int main() { // {{{
|
int main() { // {{{
|
||||||
|
|
|
||||||
|
|
@ -3,5 +3,5 @@
|
||||||
2
|
2
|
||||||
|
|
||||||
[code]: 0
|
[code]: 0
|
||||||
[time]: 2.3241 ms
|
[time]: 2.29478 ms
|
||||||
[debug]: false
|
[debug]: false
|
||||||
Loading…
Add table
Add a link
Reference in a new issue