文章目录

  • 题目信息
  • 解题思路:dp
    • 定义
    • 状态转移
  • 代码实现

题目信息

题目传送门

解题思路:dp

定义

  • dpi::节点i到根节点的合法括号序列数。
  • lasti:节点i到根节点上第一个没有匹配的右括号的位置。
  • ai:节点i到根节点上连续的已匹配的括号组数。

状态转移

  • 若当前节点是左括号 ,那么fii与aii直接继承,lasti = i。
  • 若当前节点是右括号,且lasti不存在,此括号无效。
  • 否则,有以下转移:
    ①u和last[u]匹配后上一个未匹配的是last[fa[last[u]]],即:
    last[u] = last[fa[last[u]]
    ②连续括号数 = fa[last[u]]的连续括号数 + 1,即:
    a[u] = a[fa[last[u]]] + 1
    ③匹配的过程会形成a[u]个合法串,即:
    dp[u] = dp[fa[u]] + a[u]

代码实现

#include <bits/stdc++.h>
using namespace std;
const int N = 5e5 + 5;
long long fa[N];
long long dp[N], last[N], a[N];
char s[N];
int main() {int n;cin >> n >> s + 1;for (int i = 2; i <= n; ++i) {cin >> fa[i];}long long res = 0;for (int u = 1; u <= n; ++u) {int f = fa[u];   dp[u] = dp[f];last[u] = last[f];if (s[u] == '(') {last[u] = u;} else if (last[u]) {a[u] = a[fa[last[u]]] + 1;last[u] = last[fa[last[u]]];dp[u] += a[u];}res ^= u * dp[u];}cout << res << '\n';return 0;
}

CSPS2019Day1T2(括号树)题解相关推荐

  1. 洛谷P4315 月下“毛景树” 题解

    洛谷P4315 月下"毛景树" 题解 题目链接:P4315 月下"毛景树" 题意:请维护一个数据结构,支持 改第 kkk 条边的边权 结点 uuu 到 vvv ...

  2. 【LG-P4332 [SHOI2014]】三叉神经树 题解

    题面挺有意思(恶心)的. 传送门:P4332 [SHOI2014]三叉神经树 LCT Solution 1 对于每一个非叶子节点 iii,有 valival_ivali​,表示其输出为 1 的儿子的总 ...

  3. python嵌套列表法实现树_python – 将嵌套的括号树转换为嵌套列表

    我有一个树结构文件,其中括号用于表示树.这是将代码转换为 python嵌套列表的代码 def foo(s): def foo_helper(level=0): try: token = next(to ...

  4. NOI2020D2T2超现实树题解

    题意 NNN 组数据,每组数据给定 mmm 棵二叉树,其中每棵树有 nnn 个节点. 定义一次操作为将 mmm 棵二叉树中任意一棵树的叶节点换成任意一棵二叉树,问进行若干次这样的操作后形成的树的集合是 ...

  5. [八省联考 2018] 林克卡特树 题解

    这道题我前前后后做了一年,共过了 4 4 4 遍,每次都有的新的理解:这次我认为自己理解透了,于是就写了一篇题解. 这道题是我入坑看到的第一道黑题(当时很萌,不知道黑题是什么,看到这题感觉很好玩),另 ...

  6. HDU 1556 Color the Ball 线段树 题解

    本题使用线段树自然能够,由于区间的问题. 这里比較难想的就是: 1 最后更新须要查询全部叶子节点的值,故此须要使用O(nlgn)时间效率更新全部点. 2 截取区间不能有半点差错.否则答案错误. 这两点 ...

  7. BZOJ 4551树题解

    好吧,洛谷的数据比较水暴力就可以过....(而且跑到飞快) 不过(BZ水不过去)还是讲讲正规的做法. 其实一眼可以看出可以树剖,但是,码起来有点麻烦. 其实有一种更简单的离线做法. 我们很容易联想到并 ...

  8. AcWing 1191. 家谱树 题解(拓扑排序)

    AcWing 1191. 家谱树 拓扑排序:建立一个队列,遍历所有点,将度数为1的点全部加入队列中,之后队内元素依次出队,对出队的点遍历所有临边,将这些临点的入度–,如果临点的入度为0,则加入队列中, ...

  9. HNOI2016D1T3 树 题解

    (题目描述略) 纯数据结构题,不管是树分块也好,还是树套树也罢.基本思想是将每一次复制操作中新增的所有点看作一个块,这样加上初始的模板树也看作一个块,若复制了 m 次则将大树分成 m + 1 块.将大 ...

  10. BZOJ3685 普通 van Emde Boas 树 题解(vEB 树模板题)

    (题目描述略) vEB 树的模板题,似乎用 zkw 线段树也可以过. 因为 vEB 树的建树过程花费大量时间,所以若用 STL 中的 vector 开不定长数组,其常数之大难免有超时的危险.解决方法是 ...

最新文章

  1. 有符号整型的数据范围为什么负数比正数多一个?
  2. unable to launch什么意思_都表示太...以至于,so … that…?与too… to …有着明显区别...
  3. TCP建立连接与断开连接的过程
  4. java中对map使用entrySet循环
  5. 【转载】wpf数据绑定binding与INotifyPropertyChanged
  6. 世界首富贝索斯退休?辞任CEO,转任董事会主席
  7. 2021年中国单硝酸异山梨酯市场趋势报告、技术动态创新及2027年市场预测
  8. 【macOS付费软件推荐】第6期:Reeder
  9. oracle database link
  10. 计算机英语怎么念视频,计算机的英语怎么念
  11. 学UI设计需要会手绘吗
  12. TIA博途中触摸屏仿真时画面字体变大,超出范围的处理方法
  13. java 实现dns劫持_JavaScript 防 http 劫持与 XSS
  14. 利用RedisTemplate报错redis Invalid UTF-32 character 0x6a607661 (above 0x0010ffff) at char #8, byte #35)
  15. cf768g The Winds Of Winter
  16. 转换cdm为mysql_【PowerDesigner】PowerDesigner之CDM、PDM、SQL之间转换
  17. 【结对编程】随机小学数学题测试
  18. SQL service的事务提交和回滚
  19. 小熊派简介和环境搭建
  20. 神经网络所需算力估算

热门文章

  1. python爬取b站视频封面
  2. 2021 年职业院校技能大赛“网络安全”项目 江西省比赛任务书
  3. pycharm 2018永久破解激活补丁 附安装教程
  4. 业务系统安全工程在阿里的实践|阿里巴巴DevOps实践指南
  5. html怎么做qq空间主页,如何设计qq空间
  6. 数据中心优化专家Future Facilities公司推出6Sigma DCX最新版本
  7. 《可复制领导力》读后感
  8. DNS是什么?DNS什么用?
  9. C语言lcd实现奥运五环编程,如何用C语言程序来设计奥运五环图案
  10. 洛谷 P1653 猴子 解题报告