CSP2019 括号树】的更多相关文章

Description: 给定括号树,每个节点都是 ( 或 ) ,定义节点的权值为根到该节点的简单路径所构成的括号序列中不同合法子串的个数(子串需要连续,子串所在的位置不同即为不同.)与节点编号的乘积,求所有节点权值的异或和. Solution: 闻到一股深深的 stack 气息. 懒得写了 Code: #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 5e5+1; int n; c…
[CSP-S 2019]括号树 源代码: #include<cstdio> #include<cctype> #include<vector> inline int getint() { register char ch; while(!isdigit(ch=getchar())); register int x=ch^'0'; while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0'); re…
P5658 括号树 题解 太菜了啥都不会写只能水5分数据 啥都不会写只能翻题解  题解大大我错了 我们手动找一下规律 我们设 w[ i ] 为从根节点到结点 i 对答案的贡献,也就是走到结点 i ,合法括号串又多了几个 sum[ i ] 为从根节点到结点 i 总共合法括号串数 ()()() w[i] 依次为 0  1  0  2  0  3 sum[i] 依次为 0  1  1  3  3  6 ())() w[i] 依次为 0  1  0  0  1 sum[i] 依次为 0  1  1  1…
前 言: 一直很想写这道括号树..毕竟是在去年折磨了我4个小时的题.... 上午小测3 T1 括号序列 前言: 原来这题是个dp啊...这几天出了好几道dp,我都没看出来,我竟然折磨菜. 考试的时候先打了个暴力,然后就开始往容斥上想.... 解析: 考虑dp. 令dp[i] 表示以i为结尾的,合法的子串数量. 令match[i] 表示进行括号匹配时,与i匹配的括号的编号. (以上i都是右括号,如果是左括号置为0即可) 然后,就有: if(match[i]) dp[i]=dp[match[i]-1…
2021.08.09 P5658 括号树(树形结构) [P5658 CSP-S2019] 括号树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 太长,在链接中. 分析及代码: //从一条链开始思考,得出num[x]=num[fa[x]]+1,sum[x]=sum[fa[x]]+num[x] //接下来思考是一棵树的情况:只是比一条链多了回溯 #include<cstdio> #include<algorithm> #include<iostream…
原题: 因为是NOIP题,所以首先先看特殊数据,前35分是一条长度不超过2000的链,N^2枚举所有子区间暴力check就能拿到分 其次可以思考特殊情况,一条链的情况怎么做 OI系列赛事的特殊性质分很多时候不仅是帮助得分,还帮助选手找到思路 观察合法串的形状,可以发现主要由括号嵌套和并列组成 嵌套好说,一对匹配的括号对答案贡献为1(里边包的东西不合法的括号不算匹配的括号) 对于并列的括号,可以发现如果要把两对匹配的括号并列算作一个贡献,那么必须要求这两个括号挨着,即右边的左括号的左边是左边的右括…
前言:抽时间做了做这道题,把学长送退役的题. ----------------- 题目链接 题目大意:定义$()$是合法括号串.如果$A,B$是合法括号串,那么$(AB),AB$为合法括号串.现给定根节点为$1$的一棵树,每个节点有一个括号.定义$s_i$是从根节点到$i$结点的括号串,$k_i$是$s_i$的合法子串,求$1*k_1 \ xor \ 2*k_2 \ xor \cdots \ n*k_n$. 这道题其实实现起来并不难,重要的是思维.我也是想了快一个小时才推出来式子QAQ. 可以发…
题面 不再多说,想必大家都看过这个题 思路 我们可以手推几个满足条件的字符串 我们发现在这些字符串里 每个)都与离它最近的(的匹配 所以我们维护树上每个节点到根节点中没用使用过的(的位置(nl[n]) h[i]表示以i的结尾的满足条件的串的个数 nl[n] = nl[fa[n]]; if(value[n] == 1) nl[n] = n; else { if(nl[n] != 0) { ll f = fa[nl[n]]; nl[n] = nl[f]; h[n] = 1 + h[f];//把离)最…
题目背景 本题中合法括号串的定义如下: () 是合法括号串. 如果 A 是合法括号串,则 (A) 是合法括号串. 如果 A,B 是合法括号串,则 AB 是合法括号串. 本题中子串与不同的子串的定义如下: 字符串 S 的子串是 S 中连续的任意个字符组成的字符串.S 的子串可用起始位置 \(l\) 与终止位置 \(r\) 来表示,记为 S (l, r)(\(1 \leq l \leq r \leq |S |\)\(|S |\) 表示 \(S\) 的长度). S 的两个子串视作不同当且仅当它们在 S…
题目: 题目链接:https://www.luogu.org/problem/P5658?contestId=24103 本题中合法括号串的定义如下: () 是合法括号串. 如果 A 是合法括号串,则 (A) 是合法括号串. 如果 A,B 是合法括号串,则 AB 是合法括号串. 本题中子串与不同的子串的定义如下: 字符串 S 的子串是 S 中连续的任意个字符组成的字符串.S 的子串可用起始位置 \(l\) 与终止位置 \(r\) 来表示,记为 \(S (l, r)\)(\(1 \leq l \l…