第十四届蓝桥杯 子串简写 | 树状数组解法

Problem: 第十四届蓝桥杯 子串简写

程序猿圈子里正在流行一种很新的简写方法:

对于一个字符串,只保留首尾字符,将首尾字符之间的所有字符用这部分的长度代替。

例如 internationalization 简写成 i18n,Kubernetes 简写成 K8s,Lanqiao 简写成 L5o 等。

在本题中,我们规定长度大于等于 K 的字符串都可以采用这种简写方法(长度小于 K 的字符串不配使用这种简写)。

给定一个字符串 S和两个字符 c1 和 c2,请你计算 S 有多少个以 c1 开头 c2 结尾的子串可以采用这种简写?

输入格式

第一行包含一个整数 K。

第二行包含一个字符串 S 和两个字符 c1 和 c2。

输出格式

一个整数代表答案。

数据范围

对于 20% 的数据,2≤|S|≤10000。
对于 100% 的数据,2≤|S|≤5*10^5。S只包含小写字母。c1 和 c2 都是小写字母。
|S| 代表字符串 S的长度。

输入样例:

4 abababdb a b​

输出样例:

6

文章目录

  • 解题方法
  • 复杂度
  • Code

解题方法

  1. 遍历字符串,找到等于输入的起始符s[i],则从当前字符往后数k个开始(s[i+k-1]至s[s.length()-1]),都可以做为结束符,即需要给i+k-1至s.length()-1这个区间加1。(这个区间包含了目标结束符和其他字符,最终只需找目标结束符即可)
  2. 再遍历字符串,找到每个目标结束符,再去累加上他们的大小。

复杂度

时间复杂度:

添加时间复杂度, 示例: O ( n l o g n ) O(nlogn) O(nlogn)

空间复杂度:

添加空间复杂度, 示例: O ( n ) O(n) O(n)

Code

// 子串简写
const int N = 500005;
long long tr[N];
int lowbit(int x) {return x & (-x);
}
void add(int x, long long v) {for (; x < N; x += lowbit(x)) tr[x] += v;
}
long long query(int x) {long long res = 0;for (; x > 0; x -= lowbit(x)) res += tr[x];return res;
}int main()
{long long res = 0;string s;int k;char start, end;cin >> k >> s >> start >> end;for (int i = 1; i <= s.length(); ++i) {if (s[i-1] == start)add(i + k - 1, 1);// 即以当前字符作起始符,然后保证这个子串长度>=k,所以结束符的有效范围从i + k - 1开始}for (int i = 1; i <= s.length(); ++i) {if (s[i-1] == end)res += query(i);}cout << res;return 0;
}

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

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

相关文章

npx\pnpm 镜像过期解决方法

. // 1. 清空缓存 npm cache clean --force // 2. 关闭SSL验证 npm config set strict-ssl false // 3. 安装 到这里就可以正常使用npm命令安装需要的工具了。如( npm install -g cnpm )

虚拟机中使用LNMP模拟跨域并结合前端代码解决CORS跨域的简单示例

目录 一、首先&#xff0c;下载lnmp_soft.tar.gz压缩包 二、解压lnmp_soft.tar.gz和下载相关的依赖&#xff0c;插件 三、修改/usr/local/nginx/conf/nginx.conf配置文件 四、/usr/local/nginx/sbin/nginx命令启动nginx 五、在/usr/local/nginx/html目录下新建80.html&…

D. Nene and the Mex Operator - dfs + 位运算枚举

题面 分析 将一段区间[l, r]变成最大&#xff0c;可以遵循以下规则&#xff0c;先对第一个数进行操作&#xff0c;如果他是0&#xff0c; 那么会变成1&#xff0c;所以不进行操作&#xff0c;如果不是0&#xff0c;就要进行操作&#xff0c;让它变成0&#xff0c;只有这样才能…

书生·浦语大模型实战营之微调 Llama 3 实践与教程 (XTuner 版)

书生浦语大模型实战营之微调 Llama 3 实践与教程 (XTuner 版) Llama 3 近期重磅发布,发布了 8B 和 70B 参数量的模型,XTuner 团队对 Llama 3 微调进行了光速支持!!!开源同时社区中涌现了 Llama3-XTuner-CN 手把手教大家使用 XTuner 微调 Llama 3 模型。 XTuner:http:/…

图深度学习——2.图的理论知识

1.图 1.1 图的定义 图是由节点&#xff08;顶点&#xff09;和边构成的数学结构。图用于表示对象之间的关系&#xff0c;其中节点表示对象&#xff0c;边表示对象之间的关系。 一个图&#xff0c;记为 G <V, E> &#xff0c;它包括以下两个要素&#xff1a; 1.节点&am…

[C++ 多线程并发] std::async

c11中增加了线程&#xff0c;使得我们可以非常方便的创建线程&#xff0c;它的基本用法是这样的&#xff1a; void f(int n); std::thread t(f, n 1); t.join();但是线程毕竟是属于比较低层次的东西&#xff0c;有时候使用有些不便&#xff0c;比如我希望获取线程函数的返回结…

第22天:安全开发-PHP应用留言板功能超全局变量数据库操作第三方插件引用

第二十二天 一、PHP留言板前后端功能实现 开发环境&#xff1a; DW PHPStorm PhpStudy Navicat Premium DW : HTML&JS&CSS开发 PHPStorm : 专业PHP开发IDE PhpStudy &#xff1a;Apache MYSQL环境 Navicat Premium: 全能数据库管理工具 二、数据库创建&架…

机器学习(三)之监督学习2

前言&#xff1a; 本专栏一直在更新机器学习的内容&#xff0c;欢迎点赞收藏哦&#xff01; 笔者水平有限&#xff0c;文中掺杂着自己的理解和感悟&#xff0c;如果有错误之处还请指出&#xff0c;可以在评论区一起探讨&#xff01; 1.支持向量机&#xff08;Support Vector Ma…

iTwin Capture Modeler-23中文版下载地址及安装教程

文章目录 一、iTwin Capture Modeler23中文版安装教程二、iTwin Capture Modeler23中文版下载地址一、iTwin Capture Modeler23中文版安装教程 1. 解压安装包。订阅专栏(可获取专栏内所有文章阅读权限与软件安装包)后,从文末获取安装包解压,如下所示: 2. 右击安装包,选择以…

【Web】HNCTF 2022 题解(全)

目录 Week1 Interesting_include 2048 easy_html What is Web Interesting_http easy_upload Week2 ez_SSTI easy_include ez_ssrf Canyource easy_unser easy_sql ohmywordpress Week3 ssssti Fun_php ez_phar QAQ_1inclu4e logjjjjlogjjjj …

图像哈希:Global+Local

文章信息 作者&#xff1a;梁小平&#xff0c;唐振军期刊&#xff1a;ACM Trans. Multimedia Comput. Commun. Appl&#xff08;三区&#xff09;题目&#xff1a;Robust Hashing via Global and Local Invariant Features for Image Copy Detection 目的、实验步骤及结论 目…

oai调试

1、修改docker-compose脚本 entrypoint: ["/bin/sh", "-c", "while true; do echo Hello World; sleep 1; done"] oai-upf:container_name: "oai-upf"image: oaisoftwarealliance/oai-upf:v2.0.1### 修改entrypointentrypoint: [&qu…

设计模式(023)行为型之中介者模式

中介者模式是一种行为型设计模式&#xff0c;用于减少对象之间的直接通信&#xff0c;而是通过一个中介对象来进行间接通信。这种模式有助于减少对象之间的耦合&#xff0c;使得系统更易于维护和扩展。 在中介者模式中&#xff0c;主要有以下几个角色&#xff1a;① 中介者&…

内网隧道技术总结

隧道技术解决的是网络通信问题&#xff0c;因为在内网环境下&#xff0c;我们不同的内网主机管理员会进行不同的网络配置&#xff0c;我们就需要使用不同的方式去控制我们的内网主机。隧道技术是一个后渗透的过程&#xff0c;是可以是我们已经取得了一定的权限&#xff0c;在这…

返回稀疏矩阵csr_matrix的对角线元素

diagonal matrix numpy python scipy Return diagonal elements of scipy sparse matrix https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.lil_matrix.html 给定scipy.sparse.csr.csr_matrix&#xff0c;有没有一种快速的方法可以返回对角线上的元素&…

MySQL运维故障解决方案:实战案例与深度解析

一、引言 MySQL数据库在企业应用中扮演着举足轻重的角色&#xff0c;但在运维过程中时常会遭遇各类故障。本文不仅梳理了常见的MySQL运维故障&#xff0c;还通过实战案例&#xff0c;展示了如何解决这些故障&#xff0c;确保数据库稳定运行。 二、常见故障及解决方案 1. 连接问…

NLP任务全览:涵盖各类NLP自然语言处理任务及其面临的挑战

自然语言处理(Natural Language Processing, 简称NLP&#xff09;是计算机科学与语言学中关注于计算机与人类语言间转换的领域。NLP将非结构化文本数据转换为有意义的见解&#xff0c;促进人与机器之间的无缝通信&#xff0c;使计算机能够理解、解释和生成人类语言。人类等主要…

(四)openlayers加入矢量图层.json文件

openlayers加入矢量图层.json文件 &#xff08;1&#xff09;接上一章节&#xff0c;添加矢量图层.json文件。首先下载.json矢量图层文件。链接&#xff1a;JSON矢量图层文件 &#xff08;2&#xff09;导入相关的依赖&#xff0c;提前把你下载好的矢量文件放入assets文件夹下…

巧用波卡生态优势,Mythical Games 引领 Web3 游戏新航向

Polkadot 对创新、安全和治理的承诺为 Mythical Games 提供了极大的发展价值。这个链上生态不仅将支持 Mythical Games 成长发展&#xff0c;还将帮助其他 Mythos 合作伙伴来壮大建设项目。 —— Mythical Games 创始人兼首席执行官 John Linden 近期 Web3 游戏行业又有新动向&…

【Linux】学习记录_12_system-V IPC 信号量

12 system-V IPC 信号量 12.1 进程信号量基本概念 信号量本质是计数器&#xff0c;用于协调多进程间对共享数据对象的读取&#xff0c;不以传送数据为目的&#xff0c; 主要用来保护共享资源(信号量也属于临界资源)&#xff0c;使该临界资源在一个时刻只有一个进程独享。 12…