#CSP202503C. 模板展开

发布时间:2026/10/25 22:09:44

#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情况立即计算右边表达式计算变量当前长度并输出
延伸阅读

更多相关文章

2026/10/25 1:25:02

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

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

2026/10/25 5:31:27

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

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

2026/10/24 20:25:01

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

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

2026/10/25 22:05:38

Qt本机IP获取:QNetworkInterface与QHostInfo解析避坑

上周有个做上位机的朋友发来一张截图,界面上的“本机IP”栏显示着127.0.0.1,可那台机器明明插着网线、浏览器也能正常打开网页。他把代码翻给我看,就三行:QHostInfo::localHostName()拿到主机名,再QHostInfo::fromName…

2026/10/25 22:05:38

t3code:本地优先的全栈CLI脚手架,一键构建Web/桌面/移动应用

1. 项目概述:t3code 是什么?它解决的不是“工具问题”,而是“开发流断裂”本身t3code 这个名字乍看像某个未公开的内部代号,或是某次深夜调试时随手敲下的临时命令——但它背后指向的,是一个正在悄然成型的开发者工作流…

2026/10/25 22:05:38

粒子群算法优化一次调频PID参数整定:从建模到避坑实践

简介:一份聚焦电力系统一次调频参数优化的学术文献PDF,适合高校电力自动化方向学生、电网科研人员以及从事发电机组调速器整定的工程师阅读。内容以粒子群算法为主线,针对调差系数与调节死区两大关键参数,从一次调频经济性概念入手…

2026/10/25 22:05:38

PaaS平台总体设计说明书拆解:从功能架构到容量与高可用

简介:这份文档面向云计算架构师、平台开发与运维人员,系统阐述PaaS平台的设计理念、功能架构、开发与运行环境、物理部署架构及关键子系统逻辑,涵盖用户/租户管理、资源调度、服务发现、日志收集、灾备部署等核心模块,可为企业构建…

2026/10/25 22:05:38

MATLAB实现SAR点目标成像仿真的四层建模与三步成像

简介:本资源是一份面向电子信息、雷达信号处理及遥感方向本科生与初学者的MATLAB仿真实践材料,聚焦合成孔径雷达(SAR)点目标成像原理理解与算法实现。文档系统阐述SAR成像物理机制(含距离徙动校正、RD与CS成像算法对比…

2026/10/25 22:00:38

纯NumPy从零实现CNN:手写数字识别与反向传播全解

简介:纯NumPy手写卷积神经网络完成MNIST手写数字识别,是理解CNN底层原理的轻量级实战代码。它面向想彻底搞懂卷积层、池化层、全连接层及反向传播推导的同学,也适合人工智能方向的初学者与研究者。项目不依赖任何深度学习框架,代码…

2026/10/25 0:02:22

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/25 0:02:23

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/25 0:02:23

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/25 0:02:22

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/25 0:02:23

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/25 0:02:23

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑