P5658 [CSP-S2019] 括号树
对于特殊性质fi=i-1,原图是一条链,注意到当前节点是‘ (’不会产生贡献,‘)’才会产生,那么思考怎么的计算这个贡献。
()()():每个位置贡献是0,1,0,2,0,3。答案统计出来就是说0,1,1,3,3,6。
())():贡献是0,1,0,0,1。答案是0,1,1,1,2。
()(()):0,1,0,0,1,2. 0,1,1,1,2,4。
右括号需要匹配左括号,所以将左括号的位置加入一个栈中,匹配成功就弹出,每个右括号的贡献就是他所匹配的左括号的前一个右括号的贡献值+1,这样对于链的情况就解决了。
树上也可以用同样的思路,注意递归会对栈有修改,所以回溯时要复原。
1 #include <bits/stdc++.h>
2 #define inf 0x3f3f3f3f
3 #define ll long long
4 #define maxn 500005
5 //#define loveGsy
6 using namespace std;
7 int n;
8 char c[maxn];
9 int head[maxn], nxt[maxn], to[maxn], cnt, fa[maxn];
10 ll lst[maxn], sum[maxn], ans;
11 int s[maxn], top;
12
13 void add(int u, int v) {
14 nxt[++cnt] = head[u];
15 head[u] = cnt;
16 to[cnt] = v;
17 }
18
19 void dfs(int x) {
20 int tmp = 0;
21 if (c[x] == ')') {
22 if (top) {
23 tmp = s[top];
24 lst[x] = lst[fa[tmp]] + 1;
25 --top;
26 }
27 }
28 else if (c[x] == '(') s[++top] = x;
29 sum[x] = sum[fa[x]] + lst[x];
30 for (int i = head[x]; i; i = nxt[i]) dfs(to[i]);
31 if (tmp != 0) s[++top] = tmp;
32 else if (top) --top;
33 //回溯复原
34 }
35
36 int main() {
37 #ifdef loveGsy
38 freopen("a.in", "r", stdin);
39 freopen("a.out", "w", stdout);
40 #endif
41 scanf("%d", &n);
42 scanf("%s", c + 1);
43 for (int i = 2; i <= n; i++) {
44 int f;
45 scanf("%d", &f);
46 add(f, i);
47 fa[i] = f;
48 }
49 dfs(1);
50 for (int i = 1; i <= n; i++)
51 ans ^= sum[i] * (ll)i;
52 printf("%lld", ans);
53 return 0;
54 }
P5658 [CSP-S2019] 括号树的更多相关文章
- 上午小测3 T1 括号序列 && luogu P5658 [CSP/S 2019 D1T2] 括号树 题解
前 言: 一直很想写这道括号树..毕竟是在去年折磨了我4个小时的题.... 上午小测3 T1 括号序列 前言: 原来这题是个dp啊...这几天出了好几道dp,我都没看出来,我竟然折磨菜. 考试的时候先 ...
- P5658 括号树
P5658 括号树 题解 太菜了啥都不会写只能水5分数据 啥都不会写只能翻题解 题解大大我错了 我们手动找一下规律 我们设 w[ i ] 为从根节点到结点 i 对答案的贡献,也就是走到结点 i ,合 ...
- 2021.08.09 P5658 括号树(树形结构)
2021.08.09 P5658 括号树(树形结构) [P5658 CSP-S2019] 括号树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 太长,在链接中. 分析及代码 ...
- [CSP-S 2019]括号树
[CSP-S 2019]括号树 源代码: #include<cstdio> #include<cctype> #include<vector> inline int ...
- CSP2019 括号树
Description: 给定括号树,每个节点都是 ( 或 ) ,定义节点的权值为根到该节点的简单路径所构成的括号序列中不同合法子串的个数(子串需要连续,子串所在的位置不同即为不同.)与节点编号的乘积 ...
- 括号树 noip(csp??) 2019 洛谷 P5658
洛谷AC通道 本题,题目长,但是实际想起来十分简单. 首先,对于树上的每一个后括号,我们很容易知道,他的贡献值等于上一个后括号的贡献值 + 1.(当然,前提是要有人跟他匹配,毕竟题目中要求了,是不同的 ...
- 【CSP-S 2019】【洛谷P5658】括号树【dfs】【二分】
题目: 题目链接:https://www.luogu.org/problem/P5658?contestId=24103 本题中合法括号串的定义如下: () 是合法括号串. 如果 A 是合法括号串,则 ...
- 洛谷 P5658 [CSP-S2019] 括号树
链接: P5658 分析: 显然我们应该在dfs树的同时维护每个点的答案. 注意到第 \(u\) 个点的答案可以分成两部分,不包含 \(u\) 点时的答案,和加入 \(u\) 点后新增的答案,前者可以 ...
- 题解【洛谷P5658】[CSP-S 2019]括号树
题面 一道简单的栈与\(\text{DP}\)的结合. 首先介绍一下序列上的括号匹配问题,也就是此题在序列上的做法: 设 \(dp_i\) 表示以 \(i\) 结尾的合法的括号序列个数, \(ss_i ...
- 洛谷 P5658 括号树 题解
原题链接 简要题意: 求出以从每个节点到根形成的括号序列的合法对数. 算法一 观察到 \(n \leq 8\) ,所以我们可以用 纯粹的暴力 . 用 \(O(n)\) 时间得出当前节点到根的字符串. ...
随机推荐
- 零基础学Java(11)自定义类
前言 之前的例子中,我们已经编写了一些简单的类.但是,那些类都只包含一个简单的main方法.现在来学习如何编写复杂应用程序所需要的那种主力类.通常这些类没有main方法,却有自己的实例字段和实例方 ...
- word count的reduce过程以及项目打包部署
map过程已经写完了,上面那个流程我们涉及到了泛型以及序列化,我们要知道每个参数代表的含义,这样有助于我们理解整个流程. 下面我们开始reduce,这个过程我们要把map输出的键值对把key值相同的放 ...
- 移动web开发01
pc端的支持情况.IE9以下的版本就会全军覆没.移动端就不会出现版本支持问题. 因为第一个孩子是p,但是他又是在span里面选,所以根本选不出来,报错.改成第二个孩子才可以选出来. 这样就可以选出sp ...
- Win10系统下使用Django2.0.4+Celery4.4.2+Redis来实现异步任务队列以及定时(周期)任务(2020年最新攻略)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_153 首先明确一点,celery4.1+的官方文档已经详细说明,该版本之后不需要引入依赖 django-celery 这个库了,直 ...
- vue原理相关
vue原理三大模块:响应式.vdom和diff.模板编译 vue原理要点: 1.组件化 组件化的历史:在vue之前已经有组件化的概念了,想asp.jsp.php等就有组件化的概念,nodejs也有组件 ...
- 在Go中如何正确重试请求
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com/archives/677 我们平时在开发中肯定避不开的一个问题是如何在不可靠的网络服务中 ...
- 记录Java类型推断关键字var的一种特殊用法
关于Java的var类型推断,有一种特殊用法,如下: 没有var类型之前声明一个匿名类对象,并调用它的方法. Object obj = new Object() { public void test( ...
- Vue+Koa+MongoDB从零打造一个任务管理系统
大概是在18年的时候,当时还没有疫情.当时工作中同时负责多个项目,有 PC 端运营管理后台的,有移动端 M 站的,有微信小程序的,每天 git 分支切到头昏眼花,每个需求提测需要发送邮件,而且周五要写 ...
- 调用 StatefulWidget 组件的参数时(widget.xxx)报 Invalid Constant Value
一个 Flutter 组件(Widget)在很多情况下都需要接收一些参数.Flutter 插件通常提示使用 const 关键字包裹某 Widget(很多人接受建议且执行),导致通过 widget.xx ...
- 开发H5程序或者小程序的时候,后端Web API项目在IISExpress调试中使用IP地址,便于开发调试
在我们开发开发H5程序或者小程序的时候,有时候需要基于内置浏览器或者微信开发者工具进行测试,这个时候可以采用默认的localhost进行访问后端接口,一般来说没什么问题,如果我们需要通过USB基座方式 ...