字符串算法(算法竞赛)--最小表示法与最详细的字符串哈希

1、B站视频链接:F01 最小表示法_哔哩哔哩_bilibili

题目链接:【模板】最小表示法 - 洛谷

#include <bits/stdc++.h>
using namespace std;
const int N=7e5;
int n;
int s[N];int get_min(){for(int i=1;i<=n;i++)s[n+i]=s[i];//字符串复制一倍int i=1,j=2,k=0;while(i<=n&&j<=n){for(k=0;k<n&&s[i+k]==s[j+k];k++);//相等则向后扫描s[i+k]>s[j+k]?i=i+k+1:j=j+k+1;//跳过被淘汰的那段if(i==j)j++;//相等了则让i,j其中之一向后加一位 } return min(i,j);//返回最小指针的位置 
}
int main(){scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&s[i]);int k=get_min();for(int i=0;i<n;i++){printf("%d ",s[k+i]);}return 0;
}

 

2、B站视频链接:F02 字符串哈希_哔哩哔哩_bilibili 

题目链接:【模板】字符串哈希 - 洛谷

#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ULL;
int n,m;
const int N=1000010,P=131;
char s[N];
ULL p[N],h[N];//p[i]=p^i即p的i次方,h[i]是s[1~i]的hash值//预处理hash函数的前缀和
void init(){p[0]=1,h[0]=0;for(int i=1;i<=n;i++){p[i]=p[i-1]*P;h[i]=h[i-1]*P+s[i];}
} 
//计算s[l~r]的hash值,求区间和 
ULL get(int l,int r){return h[r]-h[l-1]*p[r-l+1];
}
//判断两子串是否相等
bool substr(int l1,int r1,int l2,int r2){return get(l1,r1)==get(l2,r2);
}
int main(){cin>>n>>m;scanf("%s",s+1);init();while(m--){int a,b,c,d;cin>>a>>b>>c>>d;if(substr(a,b,c,d))puts("Yes");else puts("No");}return  0;
}
#include <bits/stdc++.h>
using namespace std;
const int N=10010;
int n,m;
char s[N];
typedef unsigned long long ULL;
const int P=131;
ULL h[N],ans[N];//计算每个字符串的哈希值
ULL calc(char *s,int n){h[0]=0;for(int i=1;i<=n;i++){h[i]=h[i-1]*P+s[i];}return h[n];//前缀和 
} 
int main(){cin>>n;for(int i=1;i<=n;i++){scanf("%s",s+1);int m=strlen(s+1);//计算字符串的长度 ans[i]=calc(s,m);}sort(ans+1,ans+n+1);//将所有哈希值排成升序,提高比较的效率 int cnt=0;for(int i=1;i<=n;i++){if(ans[i]!=ans[i-1])++cnt;}printf("%d",cnt);return 0;
}

 

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

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

相关文章

png图片转换tif图片格式(只有目标和背景两种颜色)

在这里以红色目标为例子&#xff0c;我的背景里面有很多颜色&#xff0c;但是我只想要红色的目标部分 &#xff08;注&#xff1a;这里的程序是将图片中的红色目标提取出来&#xff0c;其余背景全是黑色&#xff0c;如果想要其他颜色&#xff0c;请根据阈值自行修改&#xff09…

车载软件架构Adaptive AUTOSAR —— 身份和访问管理和加密技术

车载软件架构Adaptive AUTOSAR —— 身份和访问管理和加密技术 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。…

辽宁博学优晨教育科技有限公司视频剪辑培训靠谱吗?

在数字媒体日益繁荣的今天&#xff0c;视频剪辑已成为一项炙手可热的技能。不少培训机构纷纷涉足这一领域&#xff0c;辽宁博学优晨教育科技有限公司便是其中之一。然而&#xff0c;面对众多的选择&#xff0c;很多人不禁要问&#xff1a;辽宁博学优晨教育科技有限公司的视频剪…

android密集架移动动画效果开发

机缘 因公司需要开发密集架相关项目,涉及相关项目需求设计,市场上并未有相关动画效果流出,基于设计开发相关需求 多列密集架情况: 密集架固定列在最左侧密集架固定列在最右侧密集架固定列在最中间收获 最终完成初步效果 实例展示: android密集架移动效果 部分核心代码…

【深度学习每日小知识】交并集 (IoU)

交并集 (IOU) 是一种性能指标&#xff0c;用于评估注释、分割和对象检测算法的准确性。它量化数据集中的预测边界框或分段区域与地面实况边界框或注释区域之间的重叠。 IOU 提供了预测对象与实际对象注释的对齐程度的衡量标准&#xff0c;从而可以评估模型准确性并微调算法以改…

睿易售前初级课程Y1.1易网络易网关-2023练习题答案

1、某家庭场景,四室一厅,业主追求高画质影视观看,拉了千兆带宽,我们可以给他推荐哪款网关? A、EG105G-P B、EG210G-P C、EG105G-P-E D、EG105GW C 2、EG205G V2中“V2”代表千兆及以上版本。 A、正确 B、错误 B 3、以下产品中哪些是无线网关?【多选题】 A、EG205GW…

中科大计网学习记录笔记(十四):多路复用与解复用 | 无连接传输:UDP

前言&#xff1a; 学习视频&#xff1a;中科大郑烇、杨坚全套《计算机网络&#xff08;自顶向下方法 第7版&#xff0c;James F.Kurose&#xff0c;Keith W.Ross&#xff09;》课程 该视频是B站非常著名的计网学习视频&#xff0c;但相信很多朋友和我一样在听完前面的部分发现信…

人形机器人专题:传感器,人形机器人实现“具身感知”的关键

今天分享的是人形机器人系列深度研究报告&#xff1a;《人形机器人专题&#xff1a;传感器&#xff0c;人形机器人实现“具身感知”的关键》。 &#xff08;报告出品方&#xff1a;浙商证券股份有限公司&#xff09; 报告共计&#xff1a;44页 来源&#xff1a;人工智能学派…

大模型量化方法总结

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

TCP/IP 三次握手四次挥手详解,以及异常状态分析

目录 1.TCP/IP 三次握手TCP/IP 三次握手过程为什么是三次握手&#xff1f;半连接队列和全连接队列ISN(initial sequence number)是否是固定的吗&#xff1f;三次握手过程能携带数据&#xff1f;SYN 攻击 TCP/IP 四次挥手TCP/IP 四次挥手过程为什么是 2MSL 时间才进入到 close 状…

Redis篇----第十篇

系列文章目录 文章目录 系列文章目录前言一、Redis 集群如何选择数据库?二、怎么测试 Redis 的连通性?三、怎么理解 Redis 事务?四、Redis 事务相关的命令有哪几个?五、Redis key 的过期时间和永久有效分别怎么设置?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易…

备考2025年AMC8数学竞赛:2000-2024年AMC8真题练一练

对于想了解或者加AMC8美国数学竞赛的孩子来说&#xff0c;熟悉AMC8的历年考试真题&#xff0c;既可以了解考试的内容、形式、难度&#xff0c;还可以看看自己的掌握程度&#xff0c;发现自己的短板查漏补缺&#xff0c;毕竟&#xff0c;这个比赛考察的知识点相对固定&#xff0…

14. rk3588自带的RKNNLite检测yolo模型(python)

首先将文件夹~/rknpu2/runtime/RK3588/Linux/librknn_api/aarch64/下的文件librknnrt.so复制到文件夹/usr/lib/下&#xff08;该文件夹下原有的文件librknnrt.so是用来测试resnet50模型的&#xff0c;所以要替换成yolo模型的librknnrt.so&#xff09;&#xff0c;如下图所示&am…

【Python爬虫】requests库get和post方法使用

requests库是一个常用于http请求的模块&#xff0c;性质是和urllib&#xff0c;urllib2是一样的&#xff0c;作用就是向指定目标网站的后台服务器发起请求&#xff0c;并接收服务器返回的响应内容。 1. 安装requests库 使用pip install requests安装 如果再使用pip安装python…

数据结构——时间复杂度

前言&#xff1a; 当谈到数据结构和算法时&#xff0c;时间复杂度是一个至关重要的概念。时间复杂度是衡量算法执行时间随输入规模增长而变化的度量&#xff0c;它指示了算法的效率和性能。在本篇博客中&#xff0c;我们将深入探讨时间复杂度的相关知识&#xff0c;并结合C语言…

kali linux出现添加源无法更新的问题:更新时显示签名无效和没有数字签名

kali linux更新源时显示签名无效和没有数字签名 一、出现显示签名无效和没有数字签名二、 解决办法三、几种开源镜像站 一、出现显示签名无效和没有数字签名 原因&#xff1a;因为没有下载签名&#xff0c;所以显示签名无效和没有数字签名 二、 解决办法 wget archive.kali.o…

OpenCV边缘检测与视频读写

原理 OpenCV中的边缘检测原理主要基于图像梯度的计算&#xff0c;包括一阶梯度和二阶梯度。 一阶梯度&#xff1a;它反映了图像亮度变化的速度。Sobel算法就是一种以一阶梯度为基础的边缘检测算法。它通过计算图像在水平和垂直方向上的梯度来检测边缘。这种方法简单有效&…

mysql connect unblock with mysqladmin flush-hosts

原因 同一个ip在短时间内产生太多&#xff08;超过max_connect_errors的最大值&#xff09;中断的数据库连接而导致的阻塞。 查看 max_connect_errors show variables like max_connect_errors; 解决 前提&#xff1a;需要换一个IP地址连接 方法一 增大 max_connect_err…

命令行窗口文本复制到 Word 格式保持不变

命令行窗口文本复制到 Word 格式保持不变 References 标题栏右键 -> 编辑 -> 标记 / 全选 标题栏右键 -> 编辑 -> 复制 粘贴到 Notepad 中&#xff0c;语言栏设置对应语言&#xff0c;格式可以保持不变 复制文本粘贴到 Excel 中 选中 Excel 中文本复制&#xf…

基于qt的图书管理系统----01数据库设计

参考b站&#xff1a;视频连接 目录 1、数据库设计2、数据库增删改查2.1 book表操作2.2 user表操作2.3 record表的操作&#xff08;重点&#xff09; 3、数据表导出 1、数据库设计 使用sqlite3&#xff0c;新建一个book的表&#xff0c;并且都让主键自增 NmaeValuebookid书本…