#CSP202503C. 模板展开
模板展开 - 题目详情 - 曙梦 OJ题目一共就三种操作操作一是直接赋值 这个很好理解操作二是间接赋值 此时相当于保存了一个字符串拼接公式 里面的字符串可能会随着后续赋值而改变操作三是输出长度这题根据子任务 很容易拿到40%的分数若想将分数拿满就需要优化过程#include bits/stdc.h using namespace std; using ll long long; const int MOD 1000000007; unordered_mapstring, ll len; unordered_mapstring, vectorstring expr; unordered_mapstring, ll mem; unordered_mapstring, int vis; int tim 0; // 返回变量 var 当前对应字符串的长度 ll dfs(string var) { // 不存在动态表达式说明是直接值 if (expr.count(var) 0) { return len[var]; } // 本次计算中已经计算过 if (vis[var] tim) { return mem[var]; } vis[var] tim; ll ans 0; for (int i 0; i (int)expr[var].size(); i) { string s expr[var][i]; if (s[0] $) { string nextVar s.substr(1); ans (ans dfs(nextVar)) % MOD; } else { ans (ans s.size()) % MOD; } } mem[var] ans; return ans; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin n; while (n--) { int op; string var; cin op var; if (op 1) { string line; getline(cin, line); stringstream ss(line); vectorstring tokens; string s; while (ss s) { tokens.push_back(s); } // 开始一次新的计算 tim; ll ans 0; for (int i 0; i (int)tokens.size(); i) { string token tokens[i]; if (token[0] $) { string nextVar token.substr(1); ans (ans dfs(nextVar)) % MOD; } else { ans (ans token.size()) % MOD; } } // 操作1是直接赋值 expr.erase(var); len[var] ans; } else if (op 2) { string line; getline(cin, line); stringstream ss(line); vectorstring tokens; string s; while (ss s) { tokens.push_back(s); } expr[var] tokens; } else if (op 3) { tim; cout dfs(var) \n; } } return 0; }unordered_mapstring, ll len; unordered_mapstring, vectorstring expr; unordered_mapstring, ll mem; unordered_mapstring, int vis; int tim 0;保存直接赋值字符串长度保存操作二的动态表达式保存本次计算得到的临时答案 比如动态表达式中会重复出现一个字符串 如果记忆化过 就可以省略dfs递归过程记录缓存属于哪一次计算当前是第几次求值tim情况立即计算右边表达式计算变量当前长度并输出

相关新闻

基于SpringBoot个性化课程推荐系统设计和实现(源码+LW+调试文档)

基于SpringBoot个性化课程推荐系统设计和实现(源码+LW+调试文档)

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

2026/8/26 19:35:28 阅读更多 →
台球桌从树上掉下来砸死人的概率分析

台球桌从树上掉下来砸死人的概率分析

一、引言 1.1 研究背景与问题提出 在日常生活中,我们很少会将台球桌与树木联系在一起——前者是室内运动器材,后者是户外自然元素。然而,正是这种看似荒诞的假设情境,为我们提供了一个绝佳的风险分析案例。这种分析并非无聊的思维…

2026/8/26 19:35:28 阅读更多 →
AI 时代营销正在变天,很多企业还在沿用搜索时代的旧思路

AI 时代营销正在变天,很多企业还在沿用搜索时代的旧思路

当大模型深度渗透商业决策,不少企业的获客逻辑却还停留在网页搜索时代。竞价广告、信息流投放、传统 SEO,这些过去十几年行之有效的营销手段,正在面临一个客观现实:用户获取信息的入口已经发生迁移。现在大量 B 端采购、产品选型、…

2026/8/26 19:35:28 阅读更多 →

最新新闻

反激变换器设计实战:从拓扑原理到调试技巧全解析

反激变换器设计实战:从拓扑原理到调试技巧全解析

1. 从零开始认识反激变换器很多人第一次接触开关电源设计,最先碰到的拓扑就是反激变换器(Flyback Converter)。它在小功率AC-DC和DC-DC应用里占据统治地位,从手机充电器到工业控制板载电源,从LED驱动到辅助供电&#x…

2026/8/26 21:49:55 阅读更多 →
iOS开发错误处理全攻略:从编译到部署的调试体系与实战

iOS开发错误处理全攻略:从编译到部署的调试体系与实战

1. 项目概述:iOS开发中的“Error”江湖 在iOS开发这个行当里,和“Error”打交道,几乎是每个开发者从入门到精通的必修课。这个“iOS_Error(五)”的标题,一看就是某个系列文章或笔记的第五篇,它…

2026/8/26 21:49:55 阅读更多 →
仪器仪表编程实战:从SCPI协议到Python自动化测试

仪器仪表编程实战:从SCPI协议到Python自动化测试

1. 从“拧螺丝”到“写代码”:仪器仪表编程的认知跃迁很多人一听到“仪器仪表编程”,脑子里可能立刻浮现出复杂的电路图、晦涩的指令集,或者觉得那是自动化产线工程师才需要掌握的高深技能。这种想法,其实和十年前大家觉得“编程”…

2026/8/26 21:49:55 阅读更多 →
luaReference 深度解析:C# 如何稳定、安全地持有一个 Lua 函数

luaReference 深度解析:C# 如何稳定、安全地持有一个 Lua 函数

在 xLua Hotfix 里,DelegateBridge 靠一个名为 luaReference 的 int 字段,就能在任意时刻取回它所桥接的那个 Lua 补丁函数。一个整数,凭什么能「拿住」一个由另一套 GC 管理的动态语言对象?这背后是 Lua 注册表引用机制与跨语言内…

2026/8/26 21:49:55 阅读更多 →
基于开源RAG框架快速搭建私有知识库智能问答系统实战指南

基于开源RAG框架快速搭建私有知识库智能问答系统实战指南

1. 项目概述:从“茴香豆”到你的专属智能助理最近在社区里看到不少朋友在讨论RAG(检索增强生成),想自己动手搭一个智能助理,但又被各种框架、术语和复杂的流程给劝退了。这让我想起了之前研究“茴香豆”这个开源RAG项目…

2026/8/26 21:48:55 阅读更多 →
深入解析SparkSession:从统一入口到多租户隔离的实战指南

深入解析SparkSession:从统一入口到多租户隔离的实战指南

1. 从“入口”到“引擎”:重新认识 SparkSession 的价值 如果你刚开始接触 Spark,或者已经用了一段时间,可能对 SparkSession 这个名字既熟悉又陌生。熟悉是因为几乎每个 Spark 应用的开头,你都会看到 SparkSession.builder().…

2026/8/26 21:48:55 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/26 17:46:43 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

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

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

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

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

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

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

2026/8/26 17:46:39 阅读更多 →
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/26 1:24:05 阅读更多 →