【无标题】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;}}

相关新闻

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

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

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

2026/8/9 8:03:42 阅读更多 →
2026金昌危房鉴定检测怎么选?老旧房危房鉴定靠谱机构 TOP 结构安全检测+ 报告可查 电话汇总

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

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

2026/8/9 8:03:42 阅读更多 →
2026锦州危房鉴定检测怎么选?老旧房危房鉴定靠谱机构 TOP 结构安全检测+ 报告可查 电话汇总

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

锦州老旧房屋鳞次栉比,危房鉴定机构鱼龙混杂,不少老旧小区业主、乡镇自建房住户、商铺经营者乃至园区厂房、学校医院都亟需一份权威可靠的危房安全评估报告。市面上部分无资质机构出具的检测报告往往无法通过住建部门审核,让人白费功夫。小编…

2026/8/9 8:02:42 阅读更多 →

最新新闻

《幻兽帕鲁》Mod安装与实用指南:从原理到实践,提升游戏体验

《幻兽帕鲁》Mod安装与实用指南:从原理到实践,提升游戏体验

在《幻兽帕鲁》的世界里,探索、建造、与帕鲁并肩作战的乐趣无穷,但游戏后期重复的采集、建造、资源管理也常常让玩家感到疲惫。你是否也渴望更高效地收集资源,更自由地建造家园,或者让心爱的帕鲁拥有更酷的外观?Mod&am…

2026/8/9 9:05:08 阅读更多 →
Flutter跨平台存储权限适配全解析

Flutter跨平台存储权限适配全解析

1. 为什么Flutter存储权限适配如此重要? 在移动应用开发中,权限管理一直是开发者必须面对的棘手问题。我最近接手了一个Flutter项目,需要同时兼容Android和iOS平台的存储权限处理,这个过程让我深刻体会到跨平台权限适配的复杂性。…

2026/8/9 9:05:08 阅读更多 →
大论文盲审前国内外研究现状综述的快速撰写与真实引文生成

大论文盲审前国内外研究现状综述的快速撰写与真实引文生成

大论文盲审前国内外研究现状综述的快速撰写与真实引文生成大论文定稿盲审阶段,除了核心的实验和结论,盲审专家最关注的往往就是第一章的“国内外研究现状综述”。如果文献综述空洞无物、逻辑混乱,或者因为使用大模型润色而踩中了“假引文”的…

2026/8/9 9:05:08 阅读更多 →
Flutter+鸿蒙全球导航方案:跨平台性能优化实践

Flutter+鸿蒙全球导航方案:跨平台性能优化实践

1. 项目背景与核心价值在移动应用开发领域,跨平台导航功能一直是技术难点,特别是当需要处理海量地理数据并适配不同操作系统时。这个项目通过Flutter框架结合open_route_service库,实现了在鸿蒙系统上的高性能全球导航解决方案。我花了三个月…

2026/8/9 9:05:08 阅读更多 →
电力系统经济调度的二进制遗传算法多目标优化

电力系统经济调度的二进制遗传算法多目标优化

1. 项目概述在电力系统运行中,经济调度是一个经典而关键的优化问题。传统方法往往只考虑发电成本最小化,而现代电力系统需要同时兼顾经济性、环保性和网络安全性。这个项目正是针对这一复杂需求,提出了一种基于二进制编码遗传算法的多目标优化…

2026/8/9 9:05:08 阅读更多 →
工业 AI Agent 引入 DSL 的架构必要性:从概率生成到确定执行

工业 AI Agent 引入 DSL 的架构必要性:从概率生成到确定执行

工业 AI Agent 引入 DSL 的架构必要性:从概率生成到确定执行 工业数据分析对一致性、可复现性、可审计性的要求极高。原生大模型的概率生成特性,会导致语义漂移、口径不稳、执行逻辑分化等工程问题。工业数据库 AI Agent 引入 DSL(领域专用语…

2026/8/9 9:04:07 阅读更多 →

日新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/9 0:01:47 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/9 0:01:47 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/9 0:03:48 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/9 0:01:47 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/9 0:01:47 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/9 0:03:48 阅读更多 →

月新闻

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

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

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

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

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

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

2026/8/9 0:45:04 阅读更多 →
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/8 17:02:44 阅读更多 →