首页 > 其他分享 >P5658 [CSP-S2019] 括号树

P5658 [CSP-S2019] 括号树

时间:2022-09-29 14:00:18浏览次数:75  
标签:tmp P5658 int res top stk S2019 now CSP

P5658 CSP-S2019括号树

先考虑线性的情况
.....(....)
如果是(则将其左边的答案加入栈,这个点的答案为0
如果是)则将栈顶左边的答案+1作为贡献(答案)
每个点的答案为以这个点为右端点的字串的个数
统计答案时前缀和即可
书上的同理,将“左边”改为“父节点”
注意回溯和栈是空的的情况

点击查看代码
#include <vector>
#include <stdio.h>
#include <string.h>
const int N = 5e5 + 5;
typedef long long LL;
std::vector<int> sons[N];
int n, fa[N], stk[N], top;
char str[N];
int res[N];
LL now, ans;
void dfs(int u) {
    int tmp = -1;
    if(str[u] == '(') stk[++ top] = res[fa[u]];
    else if(top) res[u] = (tmp = stk[top]) + 1, top --;
    for(int v : sons[u]) dfs(v);
    if(str[u] == '(') top --;
    else if(tmp != -1) stk[++ top] = tmp;
}
void calc(int u) {
    now += res[u], ans ^= u * now;
    for(int v : sons[u]) calc(v);
    now -= res[u];
}
int main() {
    scanf("%d%s", &n, str + 1);
    for(int i = 2; i <= n; i ++)
        scanf("%d", fa + i), sons[fa[i]].push_back(i);
    dfs(1), calc(1), printf("%lld\n", ans);
    return 0;
}

标签:tmp,P5658,int,res,top,stk,S2019,now,CSP
From: https://www.cnblogs.com/azzc/p/16741263.html

相关文章

  • VS2022/VS2019安装WinForm打包程序,Microsoft Visual Studio Installer Projects 2022
    问题:使用VS2022创建WinForm程序,完了需要打包成安装程序,这时候我去下载MicrosoftVisualStudioInstallerProjects2022插件,速度超级慢,恶心人。总算是下载下来了,我存到我......
  • CSP 2021 J/S爆蛋记
    初赛Day?~0每天做试卷Day1AM提高题目大体和做过的题目难度差不多,所以没有特别慌。估分:\(About\)\(77\)实际:\(About\)\(77\)PM由于上午感觉进了复赛,下午随便......
  • CSP2022 J/S 游寄
    9.18A.m.自己学校考,但只能睡到7点不到,就很无语。来了好多同学,关系也不错,聊了一会天就去考试了。至于考试没什么好说的,J也就那样。P.m.上午对了一下答案,貌似\(92\)?......
  • 2022.9.24———【CSP-S模拟10】游寄
    \(Preface\)\(Rank42/42\)垫底了我超\(0pts+12pts+0pts+0pts=12pts\)\(\mathfrak{T1}\欧几里得的噩梦\)上来就干了一个线性基,我没学。他说的全集就是本来所......
  • CSP 2020
    涩图普及优秀的拆分(橙)没手也行点击查看代码#include<bits/stdc++.h>#definefffflush(stdout)#definethankputs("I***thankyouccf"),ff#definebug(.........
  • 59、Window10+VS2019调用百度的API进行活体检测
    基本思想:给客户搞了个摄像头的人证比对历程,真艰辛;本以为很简单的一个事情,最开始是人证比对,客户搞成了照片测试;我又搞成了眨眼测试,客户用上了手机播放视频;我又又搞成了手机......
  • csp模拟13[排序,Xorum, 有趣的区间问题,无聊的卡牌问题]
    排序对于这个题,它真的很妙,我们可以先考虑一下(如果\(a\)是排列)暴力怎么打。考虑两个数,他们互为逆序对,如果交换它们两个,如何让影响降到最小?那就是在他俩交换之后,他......
  • csp模拟12[开挂,叁仟柒佰万, 超级加倍, 欢乐豆 ]
    今日总结:卢本伟nb,我卢本伟没有开挂T1开挂人类智慧题....可我不够智慧我们考虑最终答案的和一定是一个定值,因为如果我将最终的序列再加一个一的话,他还是合法的,但......
  • [CSP-S2019] Emiya 家今天的饭
    P5664CSP-S2019Emiya家今天的饭容斥原理+DP答案=没有限制3的答案-∑某一列不满足性质3的答案,记号:行表示方案,纵表示食材第2类:不满足性质3的只有一种列(必须>k/2......
  • CSP-S模拟13
    全nm构造题,我爆零了T1.排序我读错题了……以为这是个普通的冒泡排序。因为需要用到所有的逆序对,所以每一次操作只能减少一个逆序对。考虑从小到大归位,我们按从大到小的顺......