CSPS2019 括号树 题解
链的部分分
我们设f[i]表示以i结尾的括号序列有多少个,那么i的实际答案就是f的前缀和
显然,所有左括号和不能匹配的右括号的f均为0
对于每一个能匹配的右括号i,我们找到与之匹配的左括号p,以i结尾的括号序列就是以p-1结尾的括号序列加上p~i这段序列。所以f[i]=f[p-1]+1。
时间复杂度 \(O(n)\) 。
满分做法
发现实际上一棵树在询问 u 节点时就是一条从 1 到 u 的链。那么我们就在dfs过程中更新括号匹配和前缀和就行
别把字符串的变量和栈的变量搞混了。最好的办法是字符串变量大写
void dfs(ll u)
{
if(a[u] == 0) sta[++ top] = u;
else
{
if(top)
{
pei[u] = sta[top];
top --;
f[u] = f[fa[pei[u]]] + 1;
he += f[u];
}
}
ans ^= (he * u);
for(auto v : e[u])
{
if(v == fa[u]) continue;
dfs(v);
}
if(a[u] == 0) top --;
else if(pei[u]) sta[++ top] = pei[u], he -= f[u];
return ;
}
CSPS2019 括号树 题解的更多相关文章
- [CSP-S2019]括号树 题解
CSP-S2 2019 D1T2 刚开考的时候先大概浏览了一遍题目,闻到一股浓浓的stack气息 调了差不多1h才调完,加上T1用了1.5h+ 然而T3还是没写出来,滚粗 思路分析 很容易想到的常规操 ...
- 上午小测3 T1 括号序列 && luogu P5658 [CSP/S 2019 D1T2] 括号树 题解
前 言: 一直很想写这道括号树..毕竟是在去年折磨了我4个小时的题.... 上午小测3 T1 括号序列 前言: 原来这题是个dp啊...这几天出了好几道dp,我都没看出来,我竟然折磨菜. 考试的时候先 ...
- 【CSP2019】括号树 题解(递推+链表)
前言:抽时间做了做这道题,把学长送退役的题. ----------------- 题目链接 题目大意:定义$()$是合法括号串.如果$A,B$是合法括号串,那么$(AB),AB$为合法括号串.现给定根 ...
- 洛谷 P5658 [CSP-S2019] 括号树
链接: P5658 分析: 显然我们应该在dfs树的同时维护每个点的答案. 注意到第 \(u\) 个点的答案可以分成两部分,不包含 \(u\) 点时的答案,和加入 \(u\) 点后新增的答案,前者可以 ...
- 洛谷 P5658 括号树 题解
原题链接 简要题意: 求出以从每个节点到根形成的括号序列的合法对数. 算法一 观察到 \(n \leq 8\) ,所以我们可以用 纯粹的暴力 . 用 \(O(n)\) 时间得出当前节点到根的字符串. ...
- P5658 [CSP-S2019] 括号树
对于特殊性质fi=i-1,原图是一条链,注意到当前节点是' ('不会产生贡献,')'才会产生,那么思考怎么的计算这个贡献. ()()():每个位置贡献是0,1,0,2,0,3.答案统计出来就是说0,1 ...
- P5658 括号树
P5658 括号树 题解 太菜了啥都不会写只能水5分数据 啥都不会写只能翻题解 题解大大我错了 我们手动找一下规律 我们设 w[ i ] 为从根节点到结点 i 对答案的贡献,也就是走到结点 i ,合 ...
- 2021.08.09 P5658 括号树(树形结构)
2021.08.09 P5658 括号树(树形结构) [P5658 CSP-S2019] 括号树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 太长,在链接中. 分析及代码 ...
- Vijos1448校门外的树 题解
Vijos1448校门外的树 题解 描述: 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的…… 如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现 ...
- [CSP-S 2019]括号树
[CSP-S 2019]括号树 源代码: #include<cstdio> #include<cctype> #include<vector> inline int ...
随机推荐
- 使用Dapr和Tye启动服务
自 2019 年开源以来,Dapr(Distributed Application runtime )已迅速成为非常流行的构建微服务的开源框架.它提供了分布式应用程序中常用的构建块和已打包的服务,例如 ...
- 关于 java 上传,下载和导入报java.lang.IllegalStateException异常解决办法
java.lang.IllegalStateException异常解决办法 最近在使用response.sendRedirect()时出现如下错误:java.lang.IllegalStateExc ...
- pycharm 安装步骤
1.双击安装包 2.点击next 3.选择安装目录后点击next进入下一步 4.根据你电脑的实际情况选择安装32位还是64位 5.勾选 .py 后即可点击next进入下一步 6.默认,直接next 7 ...
- Java面向对象编程:多态(自我理解)
多态 (1)概念:同一个行为具有多个不同表现形式或形态的能力:就是同一个接口,使用不同的实例而执行不同的操作. (2)优点:消除类型之间的耦合关系:可替换性:可扩充性:接口性:灵活性:简化性: (3) ...
- JavaSSM
Day1221 一.IT行业分类 前端 用户界面,眼睛能看到的,视觉效果比较. html5.css和css3.javascript.jquery.技术基础 bootstrap(css框架).vue.j ...
- svn批量的添加ignore
svn没有批量添加ignore file的功能,只能一个个目录去设置,故写了脚本自动化的执行 使用了svn propset,故改了ignore file,可以反复的执行此脚本 #!/usr/bin/p ...
- 后端返回字符流,前端处理进行excel文件导出操作
针对于这种的文件导出,最关键的是响应类型的设置,也就是responseType的设置(responseType:"arraybuffer"或者responseType:" ...
- 使用navicat连接本地数据库时,出现错误1251错误
在安装完MySQL的时候,我们现在一般都使用Navicat来连接数据库,可惜出现下面的错误:1251-Client does not support authentication protocol r ...
- python3.5升级到3.6
第一步: sudo apt-get install software-properties-common sudo add-apt-repository ppa:jonathonf/python-3. ...
- MonGdb#Mac安装
1.下载 # 进入 /usr/local cd /usr/local # 下载 sudo curl -O https://fastdl.mongodb.org/osx/mongodb-osx-ssl- ...