当前位置: 首页 > news >正文

洛谷 P11965 [GESP202503 七级] 等价消除-普及/提高-

题目描述

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

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

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

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

输入格式

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

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

输出格式

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

输入输出样例 #1

输入 #1

7
aaaaabb

输出 #1

9

输入输出样例 #2

输入 #2

9
babacabab

输出 #2

2

说明/提示

本题采用捆绑测试。

对于 20%20\%20% 的测试点,保证 SSS 中仅包含 aaabbb 两种字符。

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

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

solution

统计每个字母出现的次数的前缀和,其实只需要记录奇偶即可,为了高效记录可以,可以用一个二进制整数表示每个字母出现的次数是奇数次还是偶数次,如果前面某个时刻和本刻相同,则说明中间这部分可以消除

代码

#include <iostream>
#include "bit"
#include "vector"
#include "unordered_set"
#include "unordered_map"
#include "set"
#include "queue"
#include "algorithm"
#include "bitset"using namespace std;int n, x;
long long sum;unordered_map<int, int> m;int main() {char c;cin >> n;m[0] = 1;for (int i = 0; i < n; i++) {cin >> c;x ^= 1 << (c - 'a');sum += m[x];m[x]++;}cout << sum;
}

结果

在这里插入图片描述

http://www.lryc.cn/news/600042.html

相关文章:

  • 《使用Qt Quick从零构建AI螺丝瑕疵检测系统》——5. 集成OpenCV:让程序拥有“视力”
  • WebGL入门:高斯模糊
  • Qt 网络编程进阶:HTTP 客户端实现
  • leetcode102:二叉树的层序遍历(队列实现)
  • 搜索--二分查找
  • haproxy七层代理(实验)
  • Excel导入数据库-01.构思
  • 4麦 360度定位
  • 力扣 hot100 Day55
  • lock 和 synchronized 区别
  • 基于粒子群优化的PID控制在药液流量控制系统中的应用
  • nacos的配置中心
  • 学习嵌入式的第二十九天-数据结构-(2025.7.16)线程控制:互斥与同步
  • php语法--foreach和in_array的使用
  • 环境变量-进程概念(7)
  • PowerDesigner安装教程(附加安装包)PowerDesigner详细安装教程PowerDesigner 16.6 最新版安装教程
  • 7.文件操作:让程序读写文件 [特殊字符]
  • haproxy七层代理(原理)
  • 【07】C#入门到精通——C# 生成dll库 C#添加现有DLL C#调用自己生成的dll库
  • Typecho多语言解决方案:从插件到主题的完整实现
  • CANoe入门(11)-- 诊断模块
  • SpringBoot学习路径--SpringBoot的简单介绍和项目搭建
  • c++注意点(13)----设计模式(抽象工厂)
  • 医疗器械:DFEMA和PFEMA
  • 从数据脱敏到SHAP解释:用Streamlit+XGBoost构建可复现的川崎病诊断系统
  • [NLP]一个完整的 UPF 文件示例
  • 文心4.5横向对标全球大模型:技术突破与应用前景深度分析
  • OSPF 路由协议多区域
  • 利用Dify实现应用日志关键信息提取之实践
  • 九联UNT413AS_晶晨S905L3S芯片_2+8G_安卓9.0_线刷固件包