尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
【无标题】CSP历年真题题解思考过程 ——6
CSP历年真题题解思考过程 —— 6P7912 [CSP-J 2021] 小熊的果篮70分模拟解法AC解法P8815 [CSP-J 2022] 逻辑表达式AC解法P7912 [CSP-J 2021] 小熊的果篮题干链接70分模拟解法我们只需要从左往右遍历所有水果模拟就行了。遇到一个水果如果他和上个水果颜色不同那就是队头则取走然后打上标记说明已经取走下次只要取第一个颜色不同且没打标记的水果就行。while(rn){l-1;for(int32_ti1;in;i){if(l!int32_t(a[i])!u[i]){r;u[i]true;la[i];couti ;}}cout\n;}AC解法容易发现我们每次循环都重复经过了大量已经被取走的水果这就是超时的元凶。结合题意考虑使用双端队列来存储“块”每轮遍历所有块依次取出队头输出。然后再次遍历所有块空的扔了好的和上个比较如果同色就直接合并异色才插入。这样就能让常数降下来一点不会退化到O ( n 2 ) \mathcal{O}(n^2)O(n2)。int32_tl-1;arraybool,200005a;dequedequeint32_tv;for(int32_ti1;in;i){cina[i];if(l!int32_t(a[i])){la[i];v.emplace_back();}v.back().push_back(i);}while(!v.empty()){for(autoi:v){int32_thi.front();couth ;i.pop_front();}cout\n;dequedequeint32_tvv;while(!v.empty()){autonowv.front();v.pop_front();if(now.empty())continue;if(!vv.empty()a[now.front()]a[vv.back().front()]){vv.back().insert(vv.back().end(),range(now));}else{vv.push_back(move(now));}}vmove(v)}P8815 [CSP-J 2022] 逻辑表达式题干链接AC解法对于这种题一个通用的解法就是先建树然后在树上分析。怎么建树这里我们介绍一下“递归下降算法”。简单说就是将解析某种运算这里是或与括号和字面量的过程单独拆分成函数然后按照优先级在每种解析函数中调用下一级的解析函数这里是或调用与获得左右子树与调用括号和字面量获得左右子树括号调用或获取括号内内容来构造这一级的树。structexpr{int32_tk;// 0: num 1: and 2: or 3: parenbooln;shared_ptrexprl,r;expr(int32_tk,booln,shared_ptrexprl,shared_ptrexprr):k(k),n(n),l(l),r(r){}};int32_tpos;shared_ptrexprp_or();shared_ptrexprp_val(){if(s[pos]0||s[pos]1){autovalstd::make_sharedexpr(0,s[pos]-0,nullptr,nullptr);pos;returnval;}elseif(s[pos](){pos;autoinnermake_sharedexpr(3,0,p_or(),nullptr);pos;returninner;}}shared_ptrexprp_and(){autolp_val();while(s[pos]){pos;autorp_val();lmake_sharedexpr(1,0,l,r);}returnl;}shared_ptrexprp_or(){autolp_and();while(s[pos]|){pos;autorp_and();lmake_sharedexpr(2,0,l,r);}returnl;}看到p_or中我们用一个while反复的调用下一级的函数然后构造之后放到左边这是因为或是左结合的运算我们可以始终把较左边的运算放在树的左子上而与运算也是同理。括号中我们忽略了优先级调用了最高级的或运算这正是“括号先算”的运算特性。得到了语法树之后我们就可以自上而下地遍历整棵树。对于一个字面量树我们不需要执行任何操作他不需要求值也不会产生短路。对于一个与树我们先求值它的左子树如果为假那就说明有短路了直接将自己也设为假然后返回如果为真那就无事发生求值右子树即可。或运算差不多只不过是看左子树是否为真。对于括号直接求值内部即可。int32_ts_and,s_or;voiddfs(shared_ptrexpre){if(e-k0){return;}if(e-k1){dfs(e-l);if(!e-l-n){e-nfalse;s_and;return;}dfs(e-r);e-ne-r-n;}if(e-k2){dfs(e-l);if(e-l-n){e-ntrue;s_or;return;}dfs(e-r);e-ne-r-n;}if(e-k3){dfs(e-l);e-ne-l-n;}}
RELATED

相关推荐

C#方法编程指南:从基础到高级应用

C#方法编程指南:从基础到高级应用

1. C#方法基础概念解析 在C#编程中,方法(Method)是构成程序逻辑的基本单元,它封装了一系列执行特定功能的代码块。简单来说,方法就是告诉计算机"如何做"的指令集合。每个C#程序至少包含一个Main方法&#xf…

📅 2026/10/8 3:31:24
2026金昌危房鉴定检测怎么选?老旧房危房鉴定靠谱机构 TOP 结构安全检测+ 报告可查 电话汇总

2026金昌危房鉴定检测怎么选?老旧房危房鉴定靠谱机构 TOP 结构安全检测+ 报告可查 电话汇总

金昌的危房鉴定市场近年热度攀升,老旧小区业主、乡镇自建房住户、商铺经营者、园区厂房以及学校医院纷纷寻求房屋安全评估。市面上机构鳞次栉比,却鱼龙混杂,不少无资质单位出具的鉴定报告根本无法通过住建审核,白白耗费业主时间与…

📅 2026/10/6 5:14:32
技术新工具上手评测:从环境验证到集成落地的系统化实践指南

技术新工具上手评测:从环境验证到集成落地的系统化实践指南

1. 先搞清楚“新玩具”到底是什么,以及为什么值得关注 最近在技术社区里,Jason Liu 晒出的“新玩具”引起了不少讨论。对于开发者、技术爱好者和硬件玩家来说,这类“晒玩具”往往不只是简单的分享,背后通常指向一些新的开发板、硬…

📅 2026/10/10 0:57:29
MORE NEWS

更多资讯

📰

XAutoDaily QQ自动签到模块使用指南:把15项日常任务交给模块

XAutoDaily QQ自动签到模块使用指南:把15项日常任务交给模块 【免费下载链接】XAutoDaily 一个基于QQ的全自动签到模块 项目地址: https://gitcode.com/GitHub_Trending/xa/XAutoDaily 如果你每天要维护QQ会员权益,得在四五处打卡点逐一操作&…

📰

Hermes Agent 自然语言理解教程:意图识别与槽位填充,新手 5 分钟上手

Hermes Agent 自然语言理解教程:意图识别与槽位填充,新手 5 分钟上手 你发一句"帮我查下顺丰单号 SF12345 到哪了",Hermes Agent 会先判断你是想"查"而不是"寄",再把单号、快递公司这两个关键信息…

📰

Hermes Agent容器安全架构演进:从运行时防护到零信任设计的技术深度解析

Hermes Agent容器安全架构演进:从运行时防护到零信任设计的技术深度解析 在云原生与AI Agent技术融合的时代,容器安全已从简单的隔离需求演变为复杂的零信任架构挑战。传统容器安全方案往往停留在表面隔离,而AI Agent系统的动态性、多模型集…

📰

为什么DeepSeek-V4-Pro-App火了?一款面向DeepSeek-V4的开源桌面神器全面评测

【免费下载链接】DeepSeek-V4-Pro-App DeepSeek V4 Pro: Advanced AI desktop app. Features: 1.6T MoE architecture, 1M token context window, Engram memory. Pro coding agent, Think Mode (High/Max), repo-level reasoning, complex bug fixing. Real-time web search, …

📰

优化Hermes Agent的网络协议性能:TCP与UDP应用场景解析

优化Hermes Agent的网络协议性能:TCP与UDP应用场景解析 在当今快速发展的网络环境中,Hermes Agent作为一款高效的开源工具,其网络协议性能直接影响着整体运行效率。本文将深入探讨TCP与UDP两种核心网络协议在Hermes Agent中的应用场景&#…

📰

本地歌曲的带时间轴歌词怎么批量补齐?163MusicLyrics 快速上手指南

本地歌曲的带时间轴歌词怎么批量补齐?163MusicLyrics 快速上手指南 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 整理本地音乐库时,一半的歌缺歌…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬