2026/1/10 12:09:17
网站建设
项目流程
网站建设服务属于是什么费用,网站建设 北京,奉节网站建设公司,潍坊企化网站建设欢迎大家订阅我的专栏#xff1a;算法题解#xff1a;C与Python实现#xff01; 本专栏旨在帮助大家从基础到进阶 #xff0c;逐步提升编程能力#xff0c;助力信息学竞赛备战#xff01;
专栏特色 1.经典算法练习#xff1a;根据信息学竞赛大纲#xff0c;精心挑选…欢迎大家订阅我的专栏算法题解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(1≤k≤n)个abc \texttt{abc}abc首尾相接组成那么能够得到分数a k a_kak并且字符串包含的字符不能够重复计算得分整个字符串的得分是计分子串的总和。例如假设 字符串dabcabcabcabzabc \texttt{dabcabcabcabzabc}dabcabcabcabzabc的所有可能计分方式如下dabcabcabcabzabc \texttt{dabcabcabcabzabc}dabcabcabcabzabc或者dabcabcabcabzabc \texttt{dabcabcabcabzabc}dabcabcabcabzabc其中d \texttt{d}d和abz \texttt{abz}abz不计算得分总得分为a 1 a 2 a 1 a_1a_2a_1a1a2a1。dabcabcabcabzabc \texttt{dabcabcabcabzabc}dabcabcabcabzabc总得分为a 1 a 1 a 1 a 1 a_1a_1a_1a_1a1a1a1a1。dabcabcabcabzabc \texttt{dabcabcabcabzabc}dabcabcabcabzabc总得分为a 3 a 1 a_3a_1a3a1。小杨想知道对于给定的字符串最大总得分是多少。【输入】第一行包含一个正整数n nn代表计分序列A AA的长度。第二行包含n nn个正整数代表计分序列A AA。第三行包含一个正整数m mm代表字符串的长度。第四行包含一个由m mm个小写字母组成的字符串。【输出】输出一个整数代表给定字符串的最大总得分。【输入样例】3 3 1 2 13 dabcabcabcabz【输出样例】9【算法标签】《洛谷 P10721 计算得分》 #动态规划DP# #GESP# #2024#【代码详解】#includebits/stdc.husingnamespacestd;intn,m;// n: 物品数量, m: 字符串长度inta[25];// a[i]: 第i个物品的价值intf[100010];// f[i]: 前i个字符的最大价值string s;// 输入的字符串intmain(){// 输入物品数量cinn;// 输入每个物品的价值for(inti1;in;i){cina[i];}// 输入字符串长度和字符串cinms;// 在字符串前加一个空格使索引从1开始s s;// 动态规划计算最大价值for(inti1;im;i)// 遍历每个字符位置{// 初始化不匹配任何模式继承前一个位置的值f[i]f[i-1];// 尝试匹配每个物品for(intj1;jn;j){// 检查当前位置i是否足够长来匹配长度为3*j的子串// 需要匹配3*j个字符即abc重复j次if(i3*j){break;// 长度不足后面的j更大更不可能匹配}// 提取以i结尾的长度为3的子串// 注意这里代码有误应该是提取长度为3*j的子串// 但实际代码中substr只提取3个字符if(s.substr(i-3*j1,3)!abc){break;// 不匹配abc停止尝试更大的j}// 如果匹配成功更新最大价值f[i]max(f[i],f[i-3*j]a[j]);}}// 输出前m个字符的最大价值coutf[m]endl;return0;}【运行结果】3 3 1 2 13 dabcabcabcabz 9