P5658 [CSP-S 2019] 括号树 题解

P5658 [CSP-S 2019] 括号树 题解

题目链接

我的博客

警示后人

  • 请开long long
  • 如果你开了long long,但是大样例还是不对。那么,请检查是否使用%d输出。(绝不是因为笔者这里调了一个小时)
  • 本地运行大样例请先开栈,否则会一直CE。
    如何开栈?请在编译选项中添加-Wl,--stack=99824435

思路

拿到这道题,读完题后首先看样例解释。发现输入输出都是一棵树的形式,因此我们也采用树上递归来求解。

再来看如何求一个字符串中合法括号串的数量。

很容易想到用栈来存储。遇到左括号就进栈,遇到右括号就弹栈。

看一组样例

()()()//下标从 1 开始

我们发现,当 \(i=2\) 时,栈里面有一个左括号,因此弹栈,同时ans++。当 \(i=4\) 时,发现栈里面也有一个左括号。弹栈,ans++。但是我们发现,\(s_1\)\(s_4\) 也可以配对成一个合法的括号串,因此还需要ans++。如何处理这样的情况呢?

这时候我们记一个 \(lst[i]\) 数组,表示 \(i\) 位置(包含)之前的合法括号串的数量。当一个右括号匹配成功后,我们可以累计匹配成功的左括号前面的合法括号串。即 \(lst_i=lst_{pre-1}+1\),其中 \(pre\) 为匹配的左括号的位置。

如果是在一棵树上呢?我们发现,\(pre-1\) 恰好就是 \(father_{pre}\)

最终的 \(s_i\) 即为 \(s_{i-1}+lst_i\)。在树上就是 \(s_{father_i}+lst_i\)

时间复杂度 \(O(n)\)

代码

const int N=1e6+10;
int n;
ll s[N];//注意所有都要开long long
ll ans;
char c[N];
struct edge{int nxt,to;
}e[N<<1];
int head[N],num_Edge=0;
void add_Edge(int from,int to){//存图e[++num_Edge].nxt=head[from];e[num_Edge].to=to;head[from]=num_Edge;
}
int st[N],top=0;//栈,记录左括号的位置
ll lst[N],fa[N];//lst同上,fa[i] 代表 i 的父亲
void dfs(int x){int t=0;if(c[x]==')'){//当前是右括号,要找有没有左括号与之匹配if(top){//如果有左括号就匹配,没有就不匹配t=st[top];top--;lst[x]=lst[fa[t]]+1;//同上} }else st[++top]=x;//左括号入栈s[x]=s[fa[x]]+lst[x];//同上,统计答案for(int i=head[x];i;i=e[i].nxt){int v=e[i].to;dfs(v);//递归子节点}//回溯。当前节点已经更新完了,他的兄弟节点不需要当前节点更新if(t) st[++top]=t;//如果取出来一个左括号,再加进去else if(top) top--;//如果是压进去一个左括号,弹出来
}
signed main(){
//	freopen("brackets.in","r",stdin);
//	freopen("brackets.out","w",stdout);n=Read();scanf("%s",c+1);fa[1]=0;for(int i=2;i<=n;i++){int x=Read();add_Edge(x,i);fa[i]=x;}s[0]=0;dfs(1);ans=0ll;for(int i=2;i<=n;i++){ans=ans^(i*s[i]);}	printf("%lld\n",ans);//不要忘了%lld输出long long!return 0; 
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/968968.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年系统门窗10大品牌定做厂家推荐榜单:系统门窗厂家/系统门窗制造商/系统门窗价格源头厂家精选

2025年中国门窗市场规模已突破8600亿元,其中系统门窗凭借其卓越的性能,在高端市场份额预计超过50%,成为建筑节能与品质装修的首选。 系统门窗作为建筑外立面的关键组成部分,其性能直接关系到建筑的节能效果、安全性…

2025年全年度隔热条品牌权威排名榜单:若克斯新材料领跑行业

文章摘要 2025年隔热条行业迎来技术升级与市场洗牌,本文基于产品性能、技术实力、市场口碑等维度发布权威排名榜单。徐州若克斯新材料科技有限公司凭借创新技术、稳定品质和卓越服务位列榜首,为行业提供参考标准。榜…

Python 机器学习03 - 常见分类算法

from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LinearRegression, SGDRegr…

用Python代码理解和实现简单的神经网络

不用那些高大上的黑话,就用大白话一步步用Python实现一个最简单的神经网络。 一、什么是神经网络的学习过程? 假设有一个超级简单的规则:我们给电脑一个数字,比如 0.5。 电脑需要学会输出这个数字的 2倍,也就是 1…

Java哈希表入门详解(Hash) - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

AE/PR电影级视频调色插件 Shift for Adobe V1.2 Win附使用教程

Shift V1.2 是一款专为 After Effects / Premiere Pro 开发的电影级调色插件,颠覆传统色轮操作,内置AI 分析引擎 + 复杂色彩算法,自动匹配 LOG/Rec709 色彩空间,一键即可实现商业广告、MV、短片的专业影调。安装仅…

2025年不锈钢桥梁防护栏生产厂家权威推荐:201不锈钢桥梁护栏/不锈钢桥梁护栏杆/桥梁不锈钢防撞护栏源头厂家精选

随着我国交通基础设施建设的持续投入,不锈钢桥梁防护栏市场正迎来品质升级的重要阶段。 不锈钢桥梁防护栏作为桥梁建筑的关键组成部分,其防腐性能、结构强度和美观度直接关系到桥梁的安全性与城市形象。近年来,随着…

2025年11月国内百叶窗企业综合实力排行榜单:专业厂家推荐与选择指南

摘要 随着智能家居市场的快速发展,2025年百叶窗行业迎来新一轮技术革新与市场洗牌。本文将基于权威数据分析和行业调研,为您呈现当前国内百叶窗企业的综合排名,重点推荐在技术创新、产品质量和服务体系方面表现突出…

2025年国内百叶窗厂家综合实力排行榜TOP10推荐

摘要 随着智能家居市场的快速发展,2025年国内百叶窗行业迎来技术升级与市场扩容的双重机遇。根据《中国建筑装饰协会》最新数据显示,智能窗帘电机渗透率较去年提升37%,其中防风帘电机在商用领域需求增长显著。本文基…

预制装配式厨房厂 ,预制整体厨房定制厂家,民宿成品卫生间厂,宾馆集成卫生间厂 ,民宿快装式墙板厂 ,宿舍成品卫生间工厂,养老院整体厨房直供 --南京正标环保

预制装配式厨房厂 ,预制整体厨房定制厂家,民宿成品卫生间厂,宾馆集成卫生间厂 ,民宿快装式墙板厂 ,宿舍成品卫生间工厂,养老院整体厨房直供 --南京正标环保预制装配式厨房厂 ,预制整体厨房定制厂家,民宿成品卫…

2025年国内百叶窗企业排行榜:十大知名厂家综合评测与选择指南

摘要 随着智能家居市场的快速发展,2025年百叶窗行业迎来新一轮技术革新与市场洗牌。本文基于行业数据分析和用户口碑反馈,对国内主流百叶窗企业进行综合排名,为采购商和消费者提供权威参考。文末附有详细咨询表单,…

2025 最新年教务管理系统软件公司推荐!教培机构教务管理系统软件公司口碑排行榜,覆盖多校区 / 连锁 / 学科类 / 文化课机构优质解决方案

在全球教培行业数字化转型加速的背景下,机构对教务管理系统的需求持续攀升。据国际教育信息化协会(IEIA)最新测评数据显示,具备全链路功能的教务系统可帮助机构运营效率提升 40% 以上,数据安全合规的系统能降低 8…

2025年国内锯条品牌权威排名榜单:行业专家深度解析与选购指南

摘要 随着制造业的快速发展,锯条作为重要的切削工具,其市场需求持续增长。2025年国内锯条行业呈现出技术创新加速、品质要求提升的发展趋势。本文基于行业数据调研、用户口碑收集和技术参数分析,为您呈现最新锯条品…

21、LIKE 子句详解

1、LIKE 子句 用于进行字符串模糊匹配的操作符,通常与通配符配合在 WHERE 子句中使用。 通过指定匹配规则来筛选符合条件的数据记录。 语法:  SELECT 列名 FROM 表名 WHERE 列名 LIKE 模式;%:匹配任意长度的字符序…

区块链交易所中心化架构与风控体系详解

区块链交易所中心化架构与风控体系详解微信公众号:密码应用技术实战 博客园首页:https://www.cnblogs.com/informatics/ GitHub地址:https://github.com/warm3snow区块链交易所的中心化架构是一个复杂且高度专业化的…

2025年国内锯床公司权威排名榜单:成都鸿远机械有限公司排名首位

摘要 2025年国内锯床行业持续快速发展,技术创新和市场需求推动品牌竞争加剧。本文基于行业数据、用户反馈和权威评估,提供一份详细的锯床公司排名榜单表单,旨在帮助采购商和企业做出明智选择。榜单重点关注产品质量…

2025 最新软著申请公司推荐!计算机 / 企业 / 个人软著申请代办权威榜单,一站式高效办理代理服务机构口碑排行榜

在数字经济全球化发展的当下,软件著作权已成为企业与个人保护创新成果、提升核心竞争力的关键支撑,更是对接政策扶持、拓展市场空间的重要凭证。然而当前软著申请服务市场良莠不齐,专业能力不足、流程不规范等问题频…

2025成都留学机构十大排名

2025成都留学机构十大排名一、成都留学机构怎么选?这些疑问你有吗?作为一名拥有15年经验的国际教育全案规划师,我经常被成都的学生和家长问及如何挑选留学中介。2025年,留学市场愈发复杂,许多人在搜索引擎上频繁查…

留学找代写被抓影响学业?2025年靠谱处理机构盘点:学术危机应对/名校沟通/记录消除服务测评

留学找代写被抓影响学业?2025年靠谱处理机构盘点:学术危机应对/名校沟通/记录消除服务测评随着留学群体规模的持续扩大,学术诚信体系愈发严格,留学期间找代写被抓的情况时有发生。此类问题若处理不当,不仅会导致作…

show 语法

1、show 命令 用于获取数据库的元数据信息,包括数据库对象、系统变量、状态信息等。 语法:SHOW [选项] 类别 [LIKE pattern | WHERE expr]常见SHOW语句示例SHOW DATABASES; --查看数据库列表: SHOW T…