题目:斤斤计较得小Z(蓝桥OJ 2047)

问题描述: 


题解:

        做法一(kmp模板):

#include <bits/stdc++.h>
using namespace std;const int N = 1e6 + 9;
char s[N], p[N];
int nex[N];int main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);// p: 子串  s:文本串cin >> p + 1;int m = strlen(p + 1);cin >> s + 1;int n = strlen(s + 1);nex[0] = nex[1] = 0;for(int i = 2,j = 0; i <= m; i++){while(j && p[i] != p[j + 1])j = nex[j];if(p[i] == p[j + 1])j++;nex[i] = j;}int ans = 0;for(int i = 1,j = 0; i <= n; i++){while(j && s[i] != p[j + 1])j = nex[j];if(s[i] == p[j + 1])j++;if(j == m)ans++;}cout << ans << '\n';return 0;
}

        做法二 (字符串hash)  :

#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 9;
char s[N], p[N];
using ull = unsigned long long;
const ull base = 131;
ull h1[N], h2[N], b[N];  // h1:子串哈希  h2:文本串哈希  b[N]:b的i次方 ull getHash(ull h[], int l, int r)  // 获取新的独一的以l开头的r结尾的r的哈希值 
{return h[r] - h[l - 1] * b[r - l + 1]; 
}int main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);// p: 子串  s:文本串cin >> p + 1;int m = strlen(p + 1);cin >> s + 1;int n = strlen(s + 1);b[0] = 1;for(int i = 1; i <= n; i++)  // 初始化 {b[i] = b[i - 1] * base;h1[i] = h1[i - 1] * base + (int)p[i];  // (int)p[i]:第i位的ascii值 h2[i] = h2[i - 1] * base + (int)s[i];}int ans = 0;for(int i = 1; i + m - 1 <= n; i++)  // 枚举文本串的子串位置,i+m-1表示以i开头的子串的末尾,子串末尾上限到文本串末尾 {if(getHash(h1, 1, m) == getHash(h2, i, i+m-1))ans++;}cout << ans << '\n';return 0;
}

知识点:kmp模板,字符串hash

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

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

相关文章

Stable Diffusion——SDXL Turbo让 AI 出图速度提高10倍

摘要 在本研究中&#xff0c;我们提出了一种名为对抗扩散蒸馏&#xff08;ADD&#xff09;的创新训练技术&#xff0c;它能够在1至4步的采样过程中&#xff0c;高效地对大规模基础图像扩散模型进行处理&#xff0c;同时保持图像的高质量。该方法巧妙地结合了分数蒸馏技术&…

记录linux从0部署java项目(宝塔)

目录 一、安装宝塔可视化界面 二、部署前端 三、部署后端 1、配置并连接Mysql数据库 2、配置并连接redis 3、安装jdk 这里先记录一个安装后遇到的问题 安装openJDK 四、检查 一、安装宝塔可视化界面 宝塔面板下载&#xff0c;免费全能的服务器运维软件 运行安装脚本 安…

【爬虫开发】爬虫从0到1全知识md笔记第5篇:Selenium课程概要,selenium的其它使用方法【附代码文档】

爬虫开发从0到1全知识教程完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;爬虫课程概要&#xff0c;爬虫基础爬虫概述,,http协议复习。requests模块&#xff0c;requests模块1. requests模块介绍,2. response响应对象,3. requests模块发送请求,4. request…

【JAVA基础篇教学】第一篇:Java基础数据类型

博主打算从0-1讲解下java基础教学&#xff0c;今天教学第一篇&#xff1a; Java基础数据类型。 在Java中&#xff0c;数据类型是用来指定变量存储数据的类型。Java的数据类型可以分为两大类&#xff1a;原始数据类型&#xff08;Primitive Data Types&#xff09;和引用数据类型…

第六节 LLAVA模型CLI推理源码解读(多轮对话推理方式与原理(prompt与assistant))

文章目录 前言一、CLI推理实现1、推理运行方法2、cli推理结果显示二、推理模型加载三、选择模板1、模板选择2、conv_llava_v1内容2、Conversation类简单介绍四、获得roles五、推理模型图像加载方式六、推理模型文本加载方式1、输入文本获得2、messages添加prompt3、模型prompt获…

黄金基金和黄金有什么区别?

黄金基金本质上是一种投资工具&#xff0c;它通过间接投资黄金或与其紧密相关的金融衍生品来反映黄金市场的表现。不同于直接持有实物黄金&#xff0c;投资者购买黄金基金并不涉及实体黄金的保管问题&#xff0c;而是将资金交由专业的基金管理人管理&#xff0c;由他们代表投资…

流程图的新语法-mermaid的快速使用--推荐

chatgpt或者现在的大数据采用的流程图给出的代码如下&#xff1a; graph TD;A[接收客户请求] --> B[问题分类];B --> C[技术支持];B --> D[维修服务];C --> E[远程解决];C --> F[现场支持];D --> G[维修完成];G --> H[服务反馈];style A fill:#f9f,strok…

Linux C++ 022-函数模板

Linux C 022-函数模板 本节关键字&#xff1a;Linux、C、函数模板、泛型编程 相关库函数&#xff1a; 函数模板的用法 C另一种编程思想称为泛型编程&#xff0c;主要利用的技术就是模板&#xff0c;C提供两种模板机制&#xff1a;函数模板和类模板函数模板的作用&#xff1a…

IO流(字节流、字符流)

一、IO概述 1&#xff0e;什么是IO流? 存储和读取数据的解决方案l: inputo: output流∶像水流一样传输数据 2.IO流的作用? 用于读写数据&#xff08;本地文件&#xff0c;网络) 3.IO流按照流向可以分类哪两种流? 输出流:程序 - > 文件 输入流:文件 - > 程…

【解决】安装模块时报错:ERROR: *.whl is not a valid wheel filename.

其实错误信息已经告诉你了&#xff0c;就是你的文件名有问题。在你下载whl文件时一定要注意原文件的文件名&#xff0c;不要改动文件名。 以我安装pandas模块为例吧。 在我下载whl文件时&#xff0c;因为网速太慢&#xff0c;我就下载了多次&#xff0c;导致文件名变成了这个…

ssm044基于java和mysql的多角色学生管理系统+jsp

学生管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本学生管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处…

【汇编】计算机系统构成

计算机系统构成 计算机系统包括硬件和软件两部分 硬件 典型的计算机结构包括 中央处理器(CPU)、存储器和输入输出(I/O)子系统 三个主要组成部分&#xff0c;用系统总线把它们连接在一起 计算机硬件组成与各部分之间的联系 软件 计算机软件可以分为系统软件和用户软件两大类 …

redis的缓存击穿、缓存穿透、缓存雪崩

缓存击穿 缓存击穿是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失败的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个完好无损的桶上凿开一个洞。 如何解决 1. 设置热点永不过期 从redis上看,确实没有设置过期时间,这…

Linux系统优化

优化ssh链接速度 xshell中内置了ssh链接的客户端&#xff0c;Linux系统内置了ssh的服务端sshd&#xff0c;默认是开启的&#xff0c;在mac系统中&#xff0c;sshd是默认关闭的&#xff0c;需要手动开启。 [rootlocalhost ~]# ls /etc/ssh moduli sshd_config ssh_…

Monica Unlimited生产环境半年实践心得

程序员开通Monica Unlimited&#xff0c;到现在也有半年&#xff0c;AGI的影响在渐渐发生 最开始的时候并不知道如何和AI协作, 只能逼自己每天和Monica聊天, 但是感觉如果没有目的的提问, 往往也得不到想要的回答. "正则表达式"是kick-Off&#xff0c;学一次用一次的…

Node.js HTTP Server

可以支持视频断点续传。 http-server: a simple static HTTP server # Install npm install --global http-server# cd to targer directory and start http-server

如何查找下载国外博士论文

查找国外博士论文可以去ProQuest学位论文全文数据库&#xff0c;ProQuest学位论文全文数据库&#xff0c;是将ProQuest公司PQDD文摘库&#xff08;现名PQDT&#xff09;中适合中国科研人员科研和教学使用的论文全文建设而成&#xff0c;并向全国百数家科研教学单位的读者提供全…

P1579 哥德巴赫猜想(升级版)Python 埃拉托斯特尼筛法

哥德巴赫猜想&#xff08;升级版&#xff09; 题目背景 1742 年 6 月 7 日&#xff0c;哥德巴赫写信给当时的大数学家欧拉&#xff0c;正式提出了以下的猜想&#xff1a;任何一个大于 9 9 9 的奇数都可以表示成 3 3 3 个质数之和。质数是指除了 1 1 1 和本身之外没有其他约…

【数据结构与算法】贪心算法及例题

目录 贪心算法例题一&#xff1a;找零问题例题二&#xff1a;走廊搬运物品最优方案问题输入样例例题三&#xff1a;贪心自助餐 贪心算法 贪心算法是一种在每一步选择中都采取当前状态下最优的选择&#xff0c;以期望最终达到全局最优解的算法。它的核心思想是每次都选择当前最…

基于动态顺序表的应用——通讯录

文章目录 顺序表的应用——基于动态顺序表实现通讯录一、顺序表的文件&#xff1a;SeqList.hSeqList.c 二、通讯录的实现思路三、通讯录代码实现通讯录的初始化通讯录的销毁通讯录添加数据通过姓名查找联系人通讯录删除数据通讯录展示通讯录修改数据通讯录查找测试代码 四、所有…