CSP-S 2019 括号树 题解
这道题我准备按照考场上的思路从50分到100分写题解开干50分的特例当我们浏览完数据时我们会发现有一个特殊性质Fii-1。这就意味着这棵树退化为了一条链。这时这道题就变成了一道DP模版题括号匹配。当然还是要加一些处理#includebits/stdc.husingnamespacestd;longlongn,f[500005];longlongdp[500005],pos,ans,sum;longlongm;string s;intmain(){cinn;cins;s s;for(longlongi1;in;i){cinf[i];}stacklonglongst;for(longlongi1;in;i){if(s[i](){st.push(i);}else{if(!st.empty()){posst.top();st.pop();dp[i]dp[pos-1]1;}}}for(longlongi1;in;i){sumdp[i];ans^(sum*i);}coutans;return0;}70分通过观察我们可以发现当数据很小时树状的我们可以暴力做出来而链状的我们可以用线性DP做这样可以拿下70分#includebits/stdc.husingnamespacestd;longlongn,f[500005];longlongdp[500005],pos,ans,sum;longlongm;string s;vectorintG[100005];charval[100005];boolcheck(string t){stackintst;for(intl0;lt.size();l){if(t[l](){st.push(();}else{if(st.empty())returnfalse;st.pop();}}returnst.empty();}longlongxdp(){vectorlonglongdp(n1,0);vectorintst;longlongsum0,ans0;for(inti1;in;i){if(s[i-1](){st.push_back(i);dp[i]0;}else{if(!st.empty()){intposst.back();st.pop_back();dp[i]dp[pos-1]1;}else{dp[i]0;}}sumdp[i];ans^(1ll*i*sum);}returnans;}longlongdfs(intu,string path){path.push_back(val[u]);intLpath.size();intk0;for(intl0;lL;l){for(intrl;rL;r){string subpath.substr(l,r-l1);if(check(sub))k;}}longlongans1ll*u*k;for(inti0;iG[u].size();i){intvG[u][i];ans^dfs(v,path);}returnans;}intmain(){cinns;for(inti0;in;i){val[i1]s[i];}boolisftrue;vectorintf(n1);for(inti2;in;i){cinf[i];if(f[i]!i-1)isffalse;G[f[i]].push_back(i);}longlongans;if(isf){ansxdp();}else{ansdfs(1,);}coutans;return0;}正解其实之前我们已经几乎做完了只用把线性DP与树结合在一起做成一个树上DP就行了#includebits/stdc.husingnamespacestd;intn,m;string s;vectorlonglongG[500005];longlongf[500005];longlongdp[500005];longlongsum0,ans0;vectorlonglongst;voiddfs(longlongu){longlongoldsumsum;longlongm-1;if(s[u-1](){st.push_back(u);dp[u]0;}else{if(!st.empty()){mst.back();st.pop_back();dp[u]dp[f[m]]1;}else{dp[u]0;}}sumdp[u];ans^(1LL*u*sum);for(longlongi0;i(longlong)G[u].size();i){dfs(G[u][i]);}sumoldsum;if(s[u-1](){st.pop_back();}else{if(m!-1){st.push_back(m);}}}intmain(){cinns;f[1]0;for(inti2;in;i){cinf[i];G[f[i]].push_back(i);}dfs(1);coutans;return0;}

相关新闻

教模型记笔记:为什么有一类 skill 模型再聪明也替代不了

教模型记笔记:为什么有一类 skill 模型再聪明也替代不了

能力增长会消灭很多 skill:那些教模型"怎么想"的,模型自己会想了,就该拆。但它消灭不了教模型"你这里是什么样"的那一类——私有格式、内部约定、只有你知道的输入长相。模型可以无限聪明,但它猜不到你没告诉…

2026/11/15 14:36:34 阅读更多 →
Qclaw:微信里的AI编程助手,代码调试与文献处理全解析

Qclaw:微信里的AI编程助手,代码调试与文献处理全解析

1. 项目概述:一个“超级副驾驶”的诞生 最近在开发者圈子里,一个名为Qclaw的工具开始悄悄流传。它不像ChatGPT那样高调,也不像Copilot那样深度集成在IDE里,但它的定位非常独特:一个能直接在你微信里“上班”的AI助手。…

2026/11/15 14:36:34 阅读更多 →
Oracle ORA-12545错误深度解析:网络配置与系统性排查指南

Oracle ORA-12545错误深度解析:网络配置与系统性排查指南

1. 问题初探:当你的应用突然“失联”做后端开发或者运维的朋友,对“ORA-12545”这个错误代码一定不陌生。它就像一个不请自来的幽灵,总是在你最不希望的时候出现,尤其是在应用服务器尝试连接Oracle数据库的那一刻。屏幕上弹出的“…

2026/11/14 13:06:17 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/15 5:13:35 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/15 5:13:35 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/15 5:13:35 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/15 3:37:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/15 4:18:38 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/15 5:13:35 阅读更多 →

日新闻

周新闻

月新闻