CSP历年真题题解思考过程 —— 2
CSP历年真题题解思考过程 —— 2P7072 [CSP-J 2020] 直播获奖100pts解法P5658 [CSP-S 2019] 括号树20pts解法55pts解法70pts解法100ptsP7073 [CSP-J 2020] 表达式50pts解法100pts解法P7072 [CSP-J 2020] 直播获奖题干链接100pts解法注意到数据规模中每个选手成绩不超过600分容易想到桶存储。for(int32_ti1;in;i){slmax(1,int32_t(floor(i*w*1.0f/100)));cinai;b[ai];for(int32_ti600;i0;i--){sl-b[i];if(sl0){couti ;break;}}}P5658 [CSP-S 2019] 括号树题干链接20pts解法观察数据范围发现前4个点中f i i − 1 f_i i-1fi​i−1这说明树呈一条链并且因为数据不大我们可以尝试对于每个节点i ii枚举1 11~i ii中所有字串来统计所需的k i k_iki​。boolable(int32_tf,int32_tt){stackboolss;for(int32_tif;it;i){if(s[i]()ss.push(true);else{if(ss.empty())returnfalse;elsess.pop();}}returnss.empty();}int32_tmain(){// 省略部分代码...int32_tans{};for(int32_ti1;in;i){int32_ttans{};for(int32_tl1;li;l){for(int32_trl;ri;r){if(able(l,r)){tans;}}}ans^(tans*i);}coutans;// 省略部分代码...}55pts解法很容易发现我们重复处理了部分子串那我们就要考虑使用其他线性的办法重新实现。我们规定d p i dp_idpi​为以第i ii个字符结尾的字串中的括号串那么就有k i Σ d p i k_i \Sigma dp_iki​Σdpi​。对于每一个新的括号对我们令p o s t postpost为括号对开始的下标。新括号对自己是合法括号对再加上之前的那么就有d p i d p p o s t − 1 1 dp_i dp_{post-1}1dpi​dppost−1​1最后就能求出对应i ii的k i k_iki​了。stackint64_tst;for(int64_ti1;in;i){if(s[i](){st.push(i);}else{if(!st.empty()){int64_tpostst.top();st.pop();dp[i]dp[post-1]1;}}}for(int64_ti1;in;i){sumdp[i];ans^(sum*i);}coutans;记得使用int64_t。70pts解法其他测试点没有特殊性质说明我们必须按序遍历整棵树所以选择dfs。测试点8~10中有n ≤ 2000 n\leq2000n≤2000完全足够我们枚举所有子串来计算。boolable(int32_tf,int32_tt){stackboolss;for(int32_tif;it;i){if(str[i]()ss.push(true);else{if(ss.empty())returnfalse;elsess.pop();}}returnss.empty();}voiddfs(int32_tn){str.push_back(s[n]);sum0;for(int32_tl1;lint32_t(str.size());l){for(int32_trl;rint32_t(str.size());r){if(able(l-1,r-1)){sum;}}}ans^(sum*n);for(constautoi:son[n]){dfs(i);}str.pop_back();}100pts到这里我们已经快结束了。只需要把上面实现的dp套用在dfs上只要在退出节点时恢复栈即可。voiddfs(int64_tn,int64_tacc){str.push_back(s[n]);sum0;int64_tpost;if(s[n](){st.push(n);}else{if(!st.empty()){postst.top();st.pop();dp[n]dp[f[post]]1;}else{post-1;}}ans^((accdp[n])*n);for(constautoi:son[n]){dfs(i,accdp[n]);}str.pop_back();if(s[n](){st.pop();}else{if(post!-1){st.push(post);}}}P7073 [CSP-J 2020] 表达式题干链接50pts解法30%的数据中n , q ≤ 1000 n, q\leq1000n,q≤1000完全支撑我们进行在线的计算。另外20%的数据中表达式仅含与或者或运算只要对初值进行简单的标记处理即可得到。100pts解法不难发现在线计算可能导致重复计算了多个相同节点结合该题目中计算结果仅为1或者0考虑分析变量值对结果的影响性。显然我们有∀ x .0 ∧ x 0 , 1 ∨ x 1 \forall x. 0 \wedge x 0, 1 \vee x 1∀x.0∧x0,1∨x1那么先尝试以初值计算表达式结果然后分析每个与和或节点。对于与节点若某方计算得0那么将“无影响”下放到另一方下所有变量节点或节点同理。那么询问时若有要取反的变量“无影响”那么直接输出之前计算的结果。否则就是对结果有影响取反输出即可。structnode{int32_tkind;// 0: id, 1: neg. 2: conj, 3: disjint32_tid;shared_ptrnodeleft,right;booluseless{false};boolval{false};node(int32_tkind,int32_tid,shared_ptrnodeleftnullptr,shared_ptrnoderightnullptr):kind(kind),id(id),left(left),right(right){}};stacknodees;string src;stringstream ss;string tok;int32_tn;arraybool,100005init,ul;int32_tq;int32_tqi;voidprint(shared_ptrnodep){switch(p-kind){case0:{coutxp-id;break;}case1:{cout!(;print(p-left);cout);break;}case2:{cout(;print(p-left);cout)(;print(p-right);cout);break;}case3:{cout(;print(p-left);cout)|(;print(p-right);cout);break;}}}voideval(shared_ptrnodep){switch(p-kind){case0:{p-valinit[p-id];break;}case1:{eval(p-left);p-val!p-left-val;break;}case2:{eval(p-left);eval(p-right);p-valp-left-valp-right-val;break;}case3:{eval(p-left);eval(p-right);p-valp-left-val||p-right-val;break;}}}voiduseless(shared_ptrnodep){if(p-useless)return;switch(p-kind){case0:{ul[p-id]true;break;}case1:{p-uselesstrue;useless(p-left);break;}case2:{p-uselesstrue;useless(p-left);useless(p-right);break;}case3:{p-uselesstrue;useless(p-left);useless(p-right);break;}}}voidopt(shared_ptrnodep){switch(p-kind){case0:{break;}case1:{opt(p-left);break;}case2:{opt(p-left);opt(p-right);if(!p-left-val)useless(p-right);if(!p-right-val)useless(p-left);break;}case3:{opt(p-left);opt(p-right);if(p-left-val)useless(p-right);if(p-right-val)useless(p-left);break;}}}int32_tmain(){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);getline(cin,src);sssrc;while(sstok){if(tok[0]x){es.emplace(0,stoi(tok.substr(1,tok.size()-1)));}if(tok[0]!){autoleftstd::make_sharednode(es.top());es.pop();es.emplace(1,-1,left);}if(tok[0]){autoleftstd::make_sharednode(es.top());es.pop();autorightstd::make_sharednode(es.top());es.pop();es.emplace(2,-1,left,right);}if(tok[0]|){autoleftstd::make_sharednode(es.top());es.pop();autorightstd::make_sharednode(es.top());es.pop();es.emplace(3,-1,left,right);}}cinn;for(int32_ti1;in;i){cininit[i];}autoastmake_sharednode(es.top());eval(ast);opt(ast);cinq;for(int32_ti1;iq;i){cinqi;if(ul[qi]){coutast-val;}else{cout!ast-val;}cout\n;}return0;}

相关新闻

5MB超轻量级中文黑体:WenQuanYi Micro Hei 实战应用指南

5MB超轻量级中文黑体:WenQuanYi Micro Hei 实战应用指南

5MB超轻量级中文黑体:WenQuanYi Micro Hei 实战应用指南 【免费下载链接】fonts-wqy-microhei Debian package for WenQuanYi Micro Hei (mirror of https://anonscm.debian.org/git/pkg-fonts/fonts-wqy-microhei.git) 项目地址: https://gitcode.com/gh_mirrors…

2026/8/4 10:00:48 阅读更多 →
和理论对着干?高速印制电路板PCB线宽不同居然会影响走线延时

和理论对着干?高速印制电路板PCB线宽不同居然会影响走线延时

高速先生成员--黄刚考虑到我们高速先生的粉丝还是有相当一部分不做很高速的产品,那今天就不讲高速信号了,甚至这篇文章可以说是和频率没关系,我们来讲讲一个很简单的东东,那就是传输线的延时。此言一出,大家会不会立马…

2026/8/4 10:00:48 阅读更多 →
深入解析Wallpaper Engine资源格式:RePKG源码架构与实现原理

深入解析Wallpaper Engine资源格式:RePKG源码架构与实现原理

深入解析Wallpaper Engine资源格式:RePKG源码架构与实现原理 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg RePKG是一款专为Wallpaper Engine设计的C#开源工具&#xf…

2026/8/4 10:00:48 阅读更多 →

最新新闻

Figma中文插件终极指南:3分钟让英文界面变中文

Figma中文插件终极指南:3分钟让英文界面变中文

Figma中文插件终极指南:3分钟让英文界面变中文 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma复杂的英文界面而烦恼吗?作为设计师必备的协作工具&am…

2026/8/4 10:47:05 阅读更多 →
嵌入式DMA技术实战:从原理到ADC高速采集应用

嵌入式DMA技术实战:从原理到ADC高速采集应用

最近在开发嵌入式系统时,经常需要处理外设与内存之间的高速数据搬运,如果仅靠CPU搬运,不仅效率低下,还会严重占用CPU资源,导致系统整体性能下降。这时,DMA(直接存储器访问)技术就成了…

2026/8/4 10:47:05 阅读更多 →
Save Image as Type:3秒搞定网页图片格式转换的终极解决方案

Save Image as Type:3秒搞定网页图片格式转换的终极解决方案

Save Image as Type:3秒搞定网页图片格式转换的终极解决方案 【免费下载链接】Save-Image-as-Type Save Image as Type is an chrome extension which add Save as PNG / JPG / WebP to the context menu of image. 项目地址: https://gitcode.com/gh_mirrors/sa/…

2026/8/4 10:47:05 阅读更多 →
SpringBoot在茶叶电商小程序中的架构设计与实践

SpringBoot在茶叶电商小程序中的架构设计与实践

1. 项目背景与核心需求 "潇湘知茶"小程序是一个典型的垂直领域电商解决方案,它需要解决茶叶这类特殊商品在线销售的全流程问题。茶叶作为非标品,其电商系统与传统标准化商品有着显著差异: 商品属性复杂 :需要展示产地…

2026/8/4 10:47:05 阅读更多 →
绝区零智能辅助工具:从手动肝到全自动的终极突破

绝区零智能辅助工具:从手动肝到全自动的终极突破

绝区零智能辅助工具:从手动肝到全自动的终极突破 【免费下载链接】ZenlessZoneZero-OneDragon 绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄 项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon 绝区零一条龙是…

2026/8/4 10:47:05 阅读更多 →
找回QQ空间消失的记忆:GetQzonehistory帮你一键备份青春时光

找回QQ空间消失的记忆:GetQzonehistory帮你一键备份青春时光

找回QQ空间消失的记忆:GetQzonehistory帮你一键备份青春时光 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想找回多年前在QQ空间发布的那些说说?那些记…

2026/8/4 10:46:05 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/3 4:58:13 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/3 1:53:31 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/3 13:07:03 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/3 5:19:38 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/3 8:27:36 阅读更多 →