news 2026/5/13 12:32:50

GESP认证C++编程真题解析 | P10721 [GESP202406 六级] 计算得分

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GESP认证C++编程真题解析 | P10721 [GESP202406 六级] 计算得分

​欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总帖:GESP认证C++编程真题解析 | 汇总


【题目来源】

洛谷:[P10721 GESP202406 六级] 计算得分 - 洛谷

【题目描述】

小杨想要计算由m mm个小写字母组成的字符串的得分。

小杨设置了一个包含n nn个正整数的计分序列A = [ a 1 , a 2 , … , a n ] A=[a_1,a_2,\ldots,a_n]A=[a1,a2,,an],如果字符串的一个子串由k ( 1 ≤ k ≤ n ) k(1\leq k \leq n)k(1kn)abc \texttt{abc}abc首尾相接组成,那么能够得到分数a k a_kak,并且字符串包含的字符不能够重复计算得分,整个字符串的得分是计分子串的总和。

例如,假设 ,字符串dabcabcabcabzabc \texttt{dabcabcabcabzabc}dabcabcabcabzabc的所有可能计分方式如下:

  • d+abc+abcabc+abz+abc \texttt{d+abc+abcabc+abz+abc}d+abc+abcabc+abz+abc或者d+abcabc+abc+abz+abc \texttt{d+abcabc+abc+abz+abc}d+abcabc+abc+abz+abc,其中d \texttt{d}dabz \texttt{abz}abz不计算得分,总得分为a 1 + a 2 + a 1 a_1+a_2+a_1a1+a2+a1
  • d+abc+abc+abc+abz+abc \texttt{d+abc+abc+abc+abz+abc}d+abc+abc+abc+abz+abc,总得分为a 1 + a 1 + a 1 + a 1 a_1+a_1+a_1+a_1a1+a1+a1+a1
  • d+abcabcabc+abz+abc \texttt{d+abcabcabc+abz+abc}d+abcabcabc+abz+abc,总得分为a 3 + a 1 a_3+a_1a3+a1

小杨想知道对于给定的字符串,最大总得分是多少。

【输入】

  • 第一行包含一个正整数n nn,代表计分序列A AA的长度。
  • 第二行包含n nn个正整数,代表计分序列A AA
  • 第三行包含一个正整数m mm,代表字符串的长度。
  • 第四行包含一个由m mm个小写字母组成的字符串。

【输出】

输出一个整数,代表给定字符串的最大总得分。

【输入样例】

3 3 1 2 13 dabcabcabcabz

【输出样例】

9

【算法标签】

《洛谷 P10721 计算得分》 #动态规划DP# #GESP# #2024#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;intn,m;// n: 物品数量, m: 字符串长度inta[25];// a[i]: 第i个物品的价值intf[100010];// f[i]: 前i个字符的最大价值string s;// 输入的字符串intmain(){// 输入物品数量cin>>n;// 输入每个物品的价值for(inti=1;i<=n;i++){cin>>a[i];}// 输入字符串长度和字符串cin>>m>>s;// 在字符串前加一个空格,使索引从1开始s=' '+s;// 动态规划计算最大价值for(inti=1;i<=m;i++)// 遍历每个字符位置{// 初始化:不匹配任何模式,继承前一个位置的值f[i]=f[i-1];// 尝试匹配每个物品for(intj=1;j<=n;j++){// 检查:当前位置i是否足够长来匹配长度为3*j的子串// 需要匹配3*j个字符,即"abc"重复j次if(i<3*j){break;// 长度不足,后面的j更大,更不可能匹配}// 提取以i结尾的长度为3的子串// 注意:这里代码有误,应该是提取长度为3*j的子串// 但实际代码中substr只提取3个字符if(s.substr(i-3*j+1,3)!="abc"){break;// 不匹配"abc",停止尝试更大的j}// 如果匹配成功,更新最大价值f[i]=max(f[i],f[i-3*j]+a[j]);}}// 输出前m个字符的最大价值cout<<f[m]<<endl;return0;}

【运行结果】

3 3 1 2 13 dabcabcabcabz 9
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/10 4:36:26

Open-AutoGLM应用边界究竟在哪?5个真实场景告诉你它的真正实力

第一章&#xff1a;Open-AutoGLM应用边界究竟在哪&#xff1f;Open-AutoGLM作为开源自动化大语言模型工具&#xff0c;其应用边界并非由技术本身单一决定&#xff0c;而是受数据合规性、部署环境与任务复杂度共同制约。该模型在自然语言理解与生成任务中表现优异&#xff0c;但…

作者头像 李华
网站建设 2026/5/9 11:15:20

计算机毕业设计springboot基于微信小程序的母支组新农改系统 基于Spring Boot框架的微信小程序母支组新农改管理系统设计与实现 微信小程序平台下母支组新农改系统开发与应用研究

计算机毕业设计springboot基于微信小程序的母支组新农改系统57eu79 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着信息技术的飞速发展&#xff0c;传统农业管理方式逐渐难以…

作者头像 李华
网站建设 2026/5/10 8:27:52

Open-AutoGLM性能优化秘籍:来自GitHub星标破万项目的3大核心技巧

第一章&#xff1a;Open-AutoGLM性能优化概述Open-AutoGLM作为一款面向自动化自然语言生成的开源大模型框架&#xff0c;其性能表现直接影响到推理效率与部署成本。在高并发、低延迟的应用场景中&#xff0c;对模型进行系统性性能优化成为关键任务。优化目标不仅包括缩短单次推…

作者头像 李华
网站建设 2026/5/4 21:19:24

图片转 PDF:活动报名表拍照提交,高效又规范!

还在为活动报名表的整理提交抓狂&#xff1f; 手写的纸质表签完名堆成山&#xff0c;线上报名的截图散在手机相册&#xff0c;Excel登记的名单又存放在电脑文件夹…… 汇总提交时&#xff0c;要么翻半天找不到对应信息&#xff0c;要么格式不兼容被主办方打回&#xff0c;折腾半…

作者头像 李华