2025年3月GESP真题及题解(C++七级): 等价消除

2025年3月GESP真题及题解(C++七级): 等价消除

题目描述

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

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

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

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

输入格式

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

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

输出格式

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

输入输出样例 1
输入 1
7 aaaaabb
输出 1
9
输入输出样例 2
输入 2
9 babacabab
输出 2
2
说明/提示

对于20 % 20\%20%的测试点,保证S SS中仅包含a aab bb两种字符。

对于另外20 % 20\%20%的测试点,保证1 ≤ ∣ S ∣ ≤ 2000 1 \leq |S| \leq 20001S2000

对于所有测试点,保证1 ≤ ∣ S ∣ ≤ 2 × 10 5 1 \leq |S| \leq 2 \times 10^51S2×105

题目分析

核心思路

题目要求找出字符串S SS中所有可以被"等价消除"的子串。根据定义,一个字符串能被等价消除,当且仅当其中每个字符的出现次数都是偶数

因此,问题转化为:找出S SS中所有子串,使得每个字符的出现次数都是偶数。

关键观察
  1. 奇偶性状态压缩:因为只有小写字母(26种),可以用一个 26 位的二进制数表示每个字符出现次数的奇偶性(0表示偶数次,1表示奇数次)。

  2. 前缀异或思想

    • 定义prefix[i]表示前 i 个字符的奇偶性状态
    • 子串[l, r]的状态 =prefix[r] ^ prefix[l-1]
    • 子串满足条件 ⇔prefix[r] ^ prefix[l-1] = 0prefix[r] = prefix[l-1]
  3. 转化为计数问题:对于每个位置 r,统计有多少个 l (0 ≤ l < r) 使得prefix[l] = prefix[r]

  4. 高效实现:使用哈希表记录每个状态出现的次数。

算法步骤
  1. 初始化状态为 0,表示空字符串的奇偶性(所有字符出现0次,都是偶数)
  2. 遍历字符串的每个字符:
    • 更新当前奇偶性状态(异或对应字符的位)
    • 当前状态的出现次数 = 该状态之前出现的次数
    • 这些次数就是新增的满足条件的子串数量
    • 更新该状态的计数
  3. 累加所有满足条件的子串数量
时间复杂度
  • O(n),其中 n 是字符串长度
  • 使用哈希表实现状态计数的 O(1) 访问
空间复杂度
  • O(min(n, 2²⁶)),最多存储 n+1 个不同的状态

代码实现

#include<bits/stdc++.h>usingnamespacestd;intmain(){ios::sync_with_stdio(false);cin.tie(0);intn;string s;cin>>n>>s;// 状态压缩:用int的低26位表示26个字母的奇偶性intstate=0;// 当前前缀的奇偶性状态// 哈希表:记录每个状态出现的次数unordered_map<int,longlong>cnt;cnt[0]=1;// 空前缀的状态出现1次longlongans=0;// 结果可能很大,用long long// 遍历字符串for(charc:s){// 更新状态:异或对应字符的位intbit=c-'a';state^=(1<<bit);// 当前状态之前出现的次数 = 新增的满足条件的子串数ans+=cnt[state];// 更新该状态的计数cnt[state]++;}cout<<ans<<endl;return0;}

功能分析

核心功能
  1. 状态表示:使用整数的二进制位表示26个字母的奇偶性
  2. 前缀计算:通过异或运算高效更新状态
  3. 计数统计:使用哈希表记录状态出现次数
  4. 子串计数:通过状态匹配计算满足条件的子串数
正确性证明
  1. 必要性:如果子串能被等价消除,则每个字符出现偶数次,所以子串状态为0
  2. 充分性:如果子串状态为0,可以通过配对删除所有字符
  3. 计数正确prefix[r] = prefix[l]等价于子串[l+1, r]状态为0
示例分析

示例1:

输入:7 aaaaabb 处理过程: 位置0: state=0, cnt[0]=1, ans+=1 → ans=1, cnt[0]=2 位置1: state=1(a), cnt[1]=0, ans+=0 → ans=1, cnt[1]=1 位置2: state=0, cnt[0]=2, ans+=2 → ans=3, cnt[0]=3 位置3: state=1, cnt[1]=1, ans+=1 → ans=4, cnt[1]=2 位置4: state=0, cnt[0]=3, ans+=3 → ans=7, cnt[0]=4 位置5: state=3(a,b), cnt[3]=0, ans+=0 → ans=7, cnt[3]=1 位置6: state=1, cnt[1]=2, ans+=2 → ans=9, cnt[1]=3 输出:9

示例2:

输入:9 babacabab 处理过程类似,最终输出2

各种学习资料,助力大家一站式学习和提升!!!

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}

1、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html

2、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

CSP信奥赛C++一等奖通关刷题题单及题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

3、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转


GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html

4、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1166139.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5分钟部署AI写作大师:Qwen3-4B-Instruct一键开启高智商创作

5分钟部署AI写作大师&#xff1a;Qwen3-4B-Instruct一键开启高智商创作 1. 项目背景与核心价值 随着大模型技术的快速发展&#xff0c;轻量化、高性能的语言模型正逐步成为个人开发者和中小企业实现智能化内容生成的核心工具。在众多开源模型中&#xff0c;Qwen/Qwen3-4B-Ins…

2025年3月GESP真题及题解(C++八级): 上学

2025年3月GESP真题及题解(C八级): 上学 题目描述 C 城可以视为由 nnn 个结点与 mmm 条边组成的无向图。 这些结点依次以 1,2,…,n1, 2, \ldots, n1,2,…,n 标号&#xff0c;边依次以 1≤i≤m1 \leq i \leq m1≤i≤m 连接边号为 uiu_iui​ 与 viv_ivi​ 的结点&#xff0c;长度…

检测结果不准确?FSMN-VAD静音阈值优化实战案例

检测结果不准确&#xff1f;FSMN-VAD静音阈值优化实战案例 1. 背景与问题引入 在语音识别、自动字幕生成和长音频切分等任务中&#xff0c;语音端点检测&#xff08;Voice Activity Detection, VAD&#xff09;是至关重要的预处理步骤。其核心目标是从连续的音频流中精准定位…

Z-Image-Turbo内存不足?Accelerate库优化部署实战解决

Z-Image-Turbo内存不足&#xff1f;Accelerate库优化部署实战解决 Z-Image-Turbo是阿里巴巴通义实验室开源的高效AI图像生成模型&#xff0c;作为Z-Image的蒸馏版本&#xff0c;它在保持高质量图像输出的同时大幅提升了推理效率。该模型仅需8步即可完成图像生成&#xff0c;具…

小白友好!Hunyuan-MT-7B-WEBUI一键启动中文界面改造

小白友好&#xff01;Hunyuan-MT-7B-WEBUI一键启动中文界面改造 1. 引言&#xff1a;让AI工具真正“说”你的语言 在人工智能技术飞速发展的今天&#xff0c;越来越多的开源项目如 Stable Diffusion WebUI、LLaMA Factory 等正在被广泛使用。然而&#xff0c;一个长期被忽视的…

二十六、【鸿蒙 NEXT】LazyForeach没有刷新

【前言】 上一章我们介绍了ObservedV2与LazyForeach结合实现动态刷新的效果&#xff0c;这里在上一章代码基础上给出一种场景&#xff0c;虽然LazyForeach中的generateKey变更了&#xff0c;但是列表还是没有刷新的情况。 1、结合Refresh组件实现下拉刷新 我们在展示列表数据…

Qwen2.5-0.5B如何防止提示注入?安全防护部署教程

Qwen2.5-0.5B如何防止提示注入&#xff1f;安全防护部署教程 1. 引言 随着大语言模型在边缘计算和本地部署场景中的广泛应用&#xff0c;基于轻量级模型的AI对话系统正逐步进入企业服务、智能客服和个人助手等领域。Qwen/Qwen2.5-0.5B-Instruct 作为通义千问系列中体积最小&a…

fft npainting lama性能压测报告:QPS与延迟指标分析

fft npainting lama性能压测报告&#xff1a;QPS与延迟指标分析 1. 测试背景与目标 随着图像修复技术在内容创作、数字资产管理等领域的广泛应用&#xff0c;基于深度学习的图像修复系统对实时性与稳定性的要求日益提升。fft npainting lama 是一款基于 FFT&#xff08;快速傅…

2025年3月GESP真题及题解(C++八级): 割裂

2025年3月GESP真题及题解(C八级): 割裂 题目描述 小杨有一棵包含 $ n $ 个节点的树&#xff0c;其中节点的编号从 $ 1 $ 到 $ n $。 小杨设置了 $ a $ 个好点对 {⟨u1,v1⟩,⟨u2,v2⟩,…,⟨ua,va⟩}\{\langle u_1, v_1 \rangle, \langle u_2, v_2 \rangle, \dots, \langle u_…

Emotion2Vec+ Large智能家居控制?语音情绪触发指令设想

Emotion2Vec Large智能家居控制&#xff1f;语音情绪触发指令设想 1. 引言&#xff1a;从情感识别到智能交互的跃迁 随着人工智能技术的发展&#xff0c;语音交互已不再局限于“唤醒词命令”的固定模式。用户期望更自然、更具感知能力的人机交互方式。Emotion2Vec Large 作为…

语音识别避坑指南:Fun-ASR-MLT-Nano-2512常见问题全解

语音识别避坑指南&#xff1a;Fun-ASR-MLT-Nano-2512常见问题全解 你有没有遇到过这种情况&#xff1a;刚部署完 Fun-ASR-MLT-Nano-2512&#xff0c;满怀期待地上传一段粤语音频&#xff0c;结果返回空识别结果&#xff1f;或者服务启动后 CPU 占用飙到 300%&#xff0c;日志里…

SGLang动态批处理:请求合并优化实战指南

SGLang动态批处理&#xff1a;请求合并优化实战指南 1. 引言 1.1 业务场景描述 在大模型推理服务部署过程中&#xff0c;随着用户请求数量的快速增长&#xff0c;系统吞吐量和响应延迟成为关键瓶颈。尤其是在多轮对话、任务规划、结构化数据生成等复杂场景下&#xff0c;传统…

Whisper Large v3语音增强:基于深度学习的降噪技术

Whisper Large v3语音增强&#xff1a;基于深度学习的降噪技术 1. 引言 1.1 技术背景与行业需求 在多语言交流日益频繁的今天&#xff0c;语音识别技术已成为跨语言沟通、会议记录、内容创作和无障碍服务的核心工具。然而&#xff0c;真实场景中的音频往往伴随着环境噪声、回…

GPEN镜像使用小技巧,提升修复效率两倍

GPEN镜像使用小技巧&#xff0c;提升修复效率两倍 1. 引言 在人像修复与增强领域&#xff0c;GPEN&#xff08;GAN-Prior based Enhancement Network&#xff09;凭借其基于生成先验的空域学习机制&#xff0c;在保持人脸结构一致性的同时实现了高质量的超分辨率重建。然而&a…

开发者效率提升:IndexTTS-2-LLM自动化测试部署教程

开发者效率提升&#xff1a;IndexTTS-2-LLM自动化测试部署教程 1. 引言 1.1 学习目标 本文旨在为开发者提供一套完整的 IndexTTS-2-LLM 智能语音合成系统 的本地化部署与自动化测试实践方案。通过本教程&#xff0c;您将掌握&#xff1a; 如何快速部署基于 kusururi/IndexT…

AI图像增强标准建立:Super Resolution质量评估体系

AI图像增强标准建立&#xff1a;Super Resolution质量评估体系 1. 引言&#xff1a;AI超清画质增强的技术演进与挑战 随着数字内容消费的爆发式增长&#xff0c;用户对图像质量的要求持续提升。从老照片修复到移动端低带宽图片加载&#xff0c;低分辨率图像的视觉还原问题已成…

结合Multisim数据库的电路分析教学改革:深度剖析

从“做实验”到“看数据”&#xff1a;当电路分析课遇上Multisim数据库你有没有遇到过这样的场景&#xff1f;学生交上来的实验报告&#xff0c;波形图贴得整整齐齐&#xff0c;数据分析也写得头头是道。可当你问他&#xff1a;“你是怎么调出示波器的触发点的&#xff1f;”他…

SGLang-v0.5.6环境备份术:云端快照随时回滚不怕错

SGLang-v0.5.6环境备份术&#xff1a;云端快照随时回滚不怕错 你是不是也遇到过这种情况&#xff1f;刚在服务器上配好SGLang环境&#xff0c;跑通了第一个推理任务&#xff0c;正准备继续深入学习&#xff0c;结果一不小心执行了一条错误命令&#xff0c;把Python依赖全搞乱了…

支持实时录音与批量处理|深度体验科哥版FunASR语音识别WebUI

支持实时录音与批量处理&#xff5c;深度体验科哥版FunASR语音识别WebUI 1. 引言&#xff1a;中文语音识别的轻量化落地实践 在智能语音技术快速发展的今天&#xff0c;高精度、低延迟的语音识别系统正广泛应用于会议记录、视频字幕生成、客服质检等多个场景。然而&#xff0…

Z-Image-Turbo图像格式输出说明,目前仅支持PNG

Z-Image-Turbo图像格式输出说明&#xff0c;目前仅支持PNG 1. 概述与背景 阿里通义Z-Image-Turbo WebUI图像快速生成模型是由开发者“科哥”基于DiffSynth Studio框架进行二次开发的高性能AI图像生成工具。该模型在保持高质量输出的同时&#xff0c;显著提升了推理速度&#…