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

【C++】牛客 ——DP36 abb

✨题目链接:

DP36 abb


✨题目描述 

leafee 最近爱上了 abb 型语句,比如“叠词词”、“恶心心”

leafee 拿到了一个只含有小写字母的字符串,她想知道有多少个 "abb" 型的子序列?
定义: abb 型字符串满足以下条件:

  1. 字符串长度为 3 。
  2. 字符串后两位相同。
  3. 字符串前两位不同。

✨输入描述:

第一行一个正整数 𝑛n

第二行一个长度为 𝑛n 的字符串(只包含小写字母)

1≤𝑛≤1051≤n≤105

✨输出描述:

"abb" 型的子序列个数。 

✨示例1

📍输入

6 abcbcc

📍输出

8

📍说明

共有1个abb,3个acc,4个bcc 

✨解题思路

 动态规划:

  1. 初始化计数器和数组

    • f[26]:用来记录每个字母对结果的当前贡献。
    • g[26]:用来记录每个字母的出现次数。
    • res:结果变量,用来存储符合条件的子序列个数。
    • i:用来记录当前遍历到的字符的索引。
  2. 遍历字符串

    • 对于字符串中的每一个字符e
      1. 将当前字符对结果的贡献加到res中。
      2. 更新字符e的贡献值:f[e-'a'] = f[e-'a'] + i - g[e-'a']
        • i代表当前字符之前的所有字符数。
        • g[e-'a']是当前字符e之前出现的所有字符e的次数。
        • 通过计算i - g[e-'a'],得到当前字符e之前所有非e字符的数量。
      3. 更新字符e的出现次数:g[e-'a'] += 1
      4. 增加遍历索引i

 贡献值可以理解为在这以前区间有多少个    _ x   (假设现在 i 位置字符为x) 


✨代码
 

#include <iostream>
using namespace std;int main() {int n;cin >> n;string str;cin >> str;long long res = 0;int f[26]={0};int g[26]={0};long long i=0;for(auto e:str){res+=f[e-'a'];f[e-'a']=f[e-'a']+i-g[e-'a'];g[e-'a']=g[e-'a']+1;i++;}cout << res << endl;return 0;
}


※ 如果文章对你有帮助的话,可以点赞收藏!!谢谢支持

相关文章:

【C++】牛客 ——DP36 abb

✨题目链接&#xff1a; DP36 abb ✨题目描述 leafee 最近爱上了 abb 型语句&#xff0c;比如“叠词词”、“恶心心” leafee 拿到了一个只含有小写字母的字符串&#xff0c;她想知道有多少个 "abb" 型的子序列&#xff1f; 定义&#xff1a; abb 型字符串满足以下…...

SpringBoot如何实现跨域?

定义一个配置类&#xff0c;实现WebMvcConfigurer接口&#xff0c;重写addCorsMappings方法 Configuration public class CorsConfig implements WebMvcConfigurer {Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allow…...

SW 草图偏移 先预选

因为有些不能用链全部选,可以先框选要偏移的,再点偏移命令...

5.23 Linux中超时检测方式+模拟面试

1.IO多路复用的原理&#xff1f; IO多路复用使得一个或少量线程资源处理多个连接的IO事件的技术。对于要处理的多个阻塞的IO操作&#xff0c;建立集合并存储它们的文件描述符&#xff0c;利用单个阻塞函数去监控集合中文件描述符事件到达的情况&#xff0c;&#xff08;如果到…...

MySQL数据表索引命名规范

在数据库设计和开发过程中&#xff0c;索引是提高查询性能的重要工具。合理的索引命名规范不仅能提高代码的可读性&#xff0c;还能便于维护和管理。本文将详细介绍MySQL数据表索引的命名规范&#xff0c;包括不同类型索引的命名方法&#xff0c;并提供多个代码示例以说明如何命…...

python内置函数map/filter/reduce详解

在Python中&#xff0c;map(), filter(), 和 reduce() 是内置的高级函数(实际是class)&#xff0c;用于处理可迭代对象&#xff08;如列表、元组等&#xff09;的元素。这些函数通常与lambda函数一起使用&#xff0c;以简洁地表达常见的操作。下面我将分别解释这三个函数。 1. …...

PICO VR眼镜定制播放器使用说明文档videoplayerlib-ToB.apk

安装高级定制播放器 高级定制播放器下载地址:https://download.csdn.net/download/ahphong/89360454 仅限用于PICO G2、G3、G4、NEO系列VR眼镜上使用, 用途:用于第三方APP(开发者)调用定制播放器播放2D、3D、180、360全景视频。 VR眼镜系统请升级到最新版,可在官网下载,…...

基于51单片机的超声波液位测量与控制系统

基于51单片机液位控制器 &#xff08;仿真&#xff0b;程序&#xff0b;原理图PCB&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1.使用HC-SR04测量液位&#xff0c;LCD1602显示&#xff1b; 2.当水位高于设定上限的时候&#xff0c;对应声光报警报警&am…...

详细分析Element中的MessageBox基本知识(附Demo)

目录 前言1. 基本知识2. Demo2.1 确认框2.2 警告框2.3 对话框 3. this.$confirm 前言 详细知识推荐阅读&#xff1a;详细分析Element Plus中的ElMessageBox弹窗用法&#xff08;附Demo及模版&#xff09; MessageBox则常用于Vue2 1. 基本知识 MessageBox 是 Element UI 提供…...

音视频开发8 音视频中SDL的使用,SDL 在windows上环境搭建,SDL 使用 以及 常用 API说明,show YUV and play PCM

1.SDL简介 SDL&#xff08;Simple DirectMedia Layer&#xff09;&#xff0c;是一个跨平台的C语言多媒体开发库。 支持Windows、Mac OS X、Linux、iOS、Android 提供对音频、键盘、鼠标、游戏操纵杆、图形硬件的底层访问 很多的视频播放软件、模拟器、受欢迎的游戏都在使用…...

P1003 [NOIP2011 提高组] 铺地毯

题目传送门&#xff1a; P1003 [NOIP2011 提高组] 铺地毯 AC代码&#xff1a; #include<bits/stdc.h>using namespace std;int a[10005],b[10005],g[10005],k[10004];int main() {int n,x,y;cin>>n;for(int i1;i<n;i) cin>>a[i]>>b[i]>>g[…...

C语言学习笔记之指针(一)

目录 什么是指针&#xff1f; 指针和指针类型 指针的类型 指针类型的意义 指针-整数 指针的解引用 指针 - 指针 指针的关系运算 野指针 什么是野指针&#xff1f; 野指针的成因 如何规避野指针&#xff1f; 二级指针 什么是指针&#xff1f; 在介绍指针之前&#…...

化学中的不确定性。

化学中的不确定性TOC 基于元素分析的无机化学的理论大厦应该说早已落成了&#xff0c;但是却仍然存在着一些列的难解甚至是无解问题&#xff0c;这些大多是在使用理论解释现象时遇到的困难&#xff0c;有些则是在生产实践中生产工艺和生产工序设计和优化中发现的问题。于是&…...

AWS容器之Fargate

AWS Fargate是亚马逊提供的一种容器管理服务&#xff0c;它允许开发人员在AWS云中轻松运行容器化应用程序&#xff0c;而无需管理底层的服务器基础架构。Fargate可以自动管理容器的部署、扩展和负载平衡&#xff0c;并提供了与ECS和EKS等AWS容器服务集成的能力。适用于容器的无…...

C#面:DataReader与Dataset有什么区别

C#中的DataReader和DataSet都是用于处理数据的类&#xff0c;但它们有一些区别。 DataReader是一种轻量级的只进只读数据流&#xff0c;用于从数据库中检索数据。它是一种快速且高效的数据访问方式&#xff0c;适用于大量数据的读取。DataReader一次只能读取一行数据&#xff…...

操作系统课程实验1-进程调度模拟实验

操作系统课程实验1-进程调度模拟实验 一、实验介绍 1.1 实验目的 本实验模拟在单处理机环境下的处理机调度&#xff0c;帮助理解进程调度的概念&#xff0c;深入了解进程控制块的功能&#xff0c;以及进程的创建、撤销和进程各个状态间的转换过程。 1.2 实验内容 进程调度算…...

JVM CMS 在Full GC时针对跨代引用的优化

个人博客 JVM CMS 在Full GC时针对跨代引用的优化 | iwts’s blog 跨代引用问题 Full GC慢的一个很重要的问题&#xff1a;跨代引用。 简单描述就是&#xff1a; 现代JVM一般是根据对象存活的特性进行了分代&#xff0c;提高了垃圾收集的效率。但是像在回收新生代的时候&a…...

【Makefile】Makefile 编译 Keil 工程(Linux 环境)

本文使用的开发板为 stm32f103C8T6&#xff0c;使用的驱动库为stm32标准库。 目录 一、软件下载 1、stm32 标准库 2、arm-none-eabi 工具链 3、烧录器 二、Keil 工程改造 1、Keil 工程 2、基本 Makefile 工程 3、添加启动文件 4、添加链接脚本 5、去掉 core_cm3.c 三…...

Django的视图层——1HttpResponse对象详解

在django.http模块中定义了HttpResponse对象的APIHttpRequest对象由Django自动创建&#xff0c;HttpResponse对象由程序员创建在每一个视图函数中必须返回一个HttpResponse对象,当然也可以是HttpResponse子对象 1.不用模板,直接返回数据 from django.http import HttpRespons…...

企业活动想找媒体报道宣传怎样联系媒体?

在那遥远的公关江湖里,有一个传说,说的是一位勇士,手持鼠标和键盘,踏上了寻找媒体圣杯的征途。这位勇士,就是我们亲爱的市场部门小李,他的任务是为公司即将举行的一场盛大的企业活动找到媒体的聚光灯。 小李的故事,开始于一张空白的Excel表格,上面列着各大媒体的名称,旁边是一片…...

终极Obsidian笔记模板指南:如何用kepano-obsidian构建你的第二大脑

终极Obsidian笔记模板指南&#xff1a;如何用kepano-obsidian构建你的第二大脑 【免费下载链接】kepano-obsidian My personal Obsidian vault template. A bottom-up approach to note-taking and organizing things I am interested in. 项目地址: https://gitcode.com/gh_…...

DRG存档编辑器终极指南:如何快速解锁《深岩银河》的全部游戏体验

DRG存档编辑器终极指南&#xff1a;如何快速解锁《深岩银河》的全部游戏体验 【免费下载链接】DRG-Save-Editor Rock and stone! 项目地址: https://gitcode.com/gh_mirrors/dr/DRG-Save-Editor 还在为《深岩银河》中无尽的资源收集和等级提升感到疲惫吗&#xff1f;DRG…...

C++的单例模式及其作用

什么是单例模式&#xff1f;无论是在面向对象编程还是软件架构中&#xff0c;单例模式都扮演着至关重要的角色。它不仅能够确保一个类只有一个实例存在&#xff0c;还能够提供全局访问点&#xff0c;使得我们可以方便地在程序的任何地方使用该实例。但有几个设计模式并非解决抽…...

终极解决方案:彻底解决UE4SS DLL劫持导致的系统级应用程序启动错误

终极解决方案&#xff1a;彻底解决UE4SS DLL劫持导致的系统级应用程序启动错误 【免费下载链接】RE-UE4SS Injectable LUA scripting system, SDK generator, live property editor and other dumping utilities for UE4/5 games 项目地址: https://gitcode.com/gh_mirrors/r…...

Windows HEIC缩略图解决方案:让iPhone照片在资源管理器中重获新生

Windows HEIC缩略图解决方案&#xff1a;让iPhone照片在资源管理器中重获新生 【免费下载链接】windows-heic-thumbnails Enable Windows Explorer to display thumbnails for HEIC/HEIF files 项目地址: https://gitcode.com/gh_mirrors/wi/windows-heic-thumbnails 想…...

【C++修仙录02】筑基篇:vector 使用

嗨~大家好&#xff0c;这里是春栀怡铃声的博客~ “做你害怕的事&#xff0c;然后发现&#xff0c;不过如此~” 目录 创建vector 遍历方法 迭代器 reserve 扩容 resize 对size 进行改变 会加值&#xff0c;会减值 insert size capacity empty push_back erase swap c…...

Linux 软链接和硬链接详解:ln 命令背后的 inode 原理

Linux 软链接和硬链接详解&#xff1a;ln 命令背后的 inode 原理 1. 前言 Linux 中经常会看到链接文件&#xff0c;例如&#xff1a; /bin -> /usr/bin python -> python3 current -> /opt/app/releases/v2Linux 链接主要有两种&#xff1a; 软链接&#xff1a;symbol…...

事故数据四年连降,为何山西煤矿的命还是悬在一根绳上?

说实话&#xff0c;写到山西煤矿这四个字&#xff0c;我心里就咯噔一下。2026年5月22日19时29分&#xff0c;山西长治市沁源县山西通洲集团留神峪煤业有限公司井下发生瓦斯爆炸事故&#xff0c;截至到写稿&#xff0c;事故已造成90人遇难。看的心里堵得慌。我特意去翻了翻这些年…...

STM32G431实战:拆解蓝桥杯嵌入式‘分任务’调度核心,让你的代码像RTOS一样清晰

STM32G431实战&#xff1a;构建轻量级时间片轮询调度框架 在嵌入式开发中&#xff0c;尤其是资源受限的竞赛平台如蓝桥杯嵌入式赛道&#xff0c;如何高效管理多个外设任务是一个常见挑战。传统的while(1)轮询方式会导致代码臃肿且难以维护&#xff0c;而完整RTOS又可能超出硬件…...

Go语言单元测试:testing框架

Go语言单元测试&#xff1a;testing框架 1. 测试基础 func TestAdd(t *testing.T) {if Add(1, 2) ! 3 {t.Error("Add failed")} }2. 总结 单元测试是保证代码质量的基础&#xff0c;Go语言内置testing框架。...