伊春市网站建设_网站建设公司_测试上线_seo优化
2026/1/17 9:23:55 网站建设 项目流程

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

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

适合人群:

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

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


【题目来源】

洛谷:P11965 [GESP202503 七级] 等价消除 - 洛谷 (luogu.com.cn)

【题目描述】

小 A 有一个仅包含小写英文字母的字符串S SS

对于一个字符串,如果能通过每次删去其中两个相同字符的方式,将这个字符串变为空串,那么称这个字符串是可以被等价消除的。

小 A 想知道S SS有多少子串是可以被等价消除的。

一个字符串S ′ S'SS SS的子串,当且仅当删去S SS的某个可以为空的前缀和某个可以为空的后缀之后,可以得到S ′ S'S

【输入】

第一行,一个正整数∣ S ∣ |S|S,表示字符串S SS的长度。

第二行,一个仅包含小写英文字母的字符串S SS

【输出】

一行,一个整数,表示答案。

【输入样例】

7 aaaaabb

【输出样例】

9

【算法标签】

《洛谷 P11965 等价消除》 #前缀和# #位运算# #GESP# #2025#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong// 定义宏,将int替换为long long类型constintN=2e5+5;// 定义最大字符数intn,x,ans;// n: 字符串长度,x: 当前异或值,ans: 结果计数chara[N];// 存储输入的字符串map<int,int>mp;// 哈希表,记录异或值出现的次数signedmain(){cin>>n;// 输入字符串长度cin>>a;// 输入字符串mp[0]=1;// 初始化:空字符串的异或值为0,出现1次for(inti=0;i<n;i++){// 计算当前字符对应的位,并更新异或值x^=(1<<(a[i]-'a'));// 如果当前异或值之前出现过,则存在满足条件的子串ans+=mp[x];// 更新当前异或值的出现次数mp[x]++;}cout<<ans<<endl;// 输出满足条件的子串数量return0;}

【运行结果】

7 aaaaabb 9

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询