poj 2774 后缀数组模板

【YOLOv8实战】从零构建番茄成熟度智能检测GUI系统【附完整工程】 本文详细介绍了从零构建基于YOLOv8的番茄成熟度智能检测GUI系统的完整实战流程。内容涵盖环境搭建、数据集准备、模型训练调优,并重点讲解如何使用PyQt5开发图形界面,最终将项目打包为可执行文件,实现AI模型从训练到桌面应用落地的完整工程闭环。 阅读详情

求两个字符串的最长公共子串。

将两个字符串连接为一个新字符串,并计算后缀数组和高度数组lcp。

然后检查后缀数组中所有相邻的后缀,其中后缀分别属于第一和第二个字符串的lcp的最大值就是答案。


#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <stack>
#include <queue>
using namespace std;
#define maxn 200005


int r[maxn];
int rank[maxn],height[maxn],sa[maxn]; 
//sa[1~n]为有效值,sa[0]必定是n
//height[2~n]为有效值,height[i]代表是S[sa[i-1]...]和S[sa[i]...]的最长公公前缀lcp
int t1[maxn],t2[maxn],c[maxn];//辅助数组
bool cmp(int *r, int a, int b, int l)
{
    return r[a]==r[b]&&r[a+l]==r[b+l];
}
//logn次基数排序,O(nlogn)
void da(int *str,int n,int m) //n为字符串长度,m为字符最大值
{
    n++;
    int i,j,p,*x=t1, *y=t2;
    for(i=0; i<m; i++) c[i]=0;
    for(i=0; i<n; i++) c[x[i]=str[i]]++;
    for(i=1; i<m; i++) c[i]+=c[i-1];
    for(i=n-1; i>=0; i--) sa[--c[x[i]]]=i;
    for(j=1; j<=n; j<<=1){
        p=0;
        for(i=n-j; i<n; i++) y[p++]=i;
        for(i=0; i<n; i++) if(sa[i]>=j) y[p++]=sa[i]-j;

        for(i=0; i<m; i++) c[i]=0;
        for(i=0; i<n; i++) c[x[y[i]]]++;
        for(i=1; i<m; i++) c[i]+=c[i-1];
        for(i=n-1; i>=0; i--) sa[--c[x[y[i]]]]=y[i];
        swap(x,y);
        p=1; x[sa[0]]=0;
        for(i=1; i<n; i++)
            x[sa[i]]=cmp(y, sa[i-1], sa[i], j)?p-1:p++;
        if(p>=n) break;
        m=p;
    }
    n--;
    int k=0;
    for(i=0; i<=n; i++) rank[sa[i]]=i;
    for(i=0; i<n; i++){
        if(k)k--;
        j=sa[rank[i]-1];
        while(str[i+k]==str[j+k]){k++;}
        height[rank[i]]=k;
    }
}
char s[maxn];

int main()
{
    while(scanf("%s", s)==1){
        int len=strlen(s);
        s[len]='#';
        scanf("%s", s+len+1);
        int n=strlen(s);
        for(int i=0; i<n; i++) r[i]=s[i];
        r[n]=0;
        da(r, n, 128);
        int ans=0;
        for(int i=1; i<n; i++)
            if( (sa[i]<len) != (sa[i+1]<len))
            ans=max(ans, height[i+1]);
        printf("%d\n", ans);
    }
    return 0;
}



【学习体会】Lighttools8.4.0:矩形阵列光源+条形光源的光学仿真分析 在solidworks中设计了条形光源的基本结构: 由32*6个矩形led组成矩形光源阵列,如下所示 另存为step文件后,导入lighttools中,这里要设置模型的光学属性为:吸收体(机械) 因为我们设计的光源模型是一个整体,我们不能单个面的设置光源,比如说, 这样做的话并不会是这个面设置为光源,而是会把做一个模型都变成一个光源,如下 这显然不是我们想要的 那么,我们就在led位置上放置一个矩形面光源, 这样我们就放置好了一个面光源, 但是问题是,还有191... 阅读详情

相关推荐

Cocos Creator3.5.2使用Spine切换皮肤

3、然后获取当前spine中是否有皮肤数据,如果spine连皮肤数据都没有,接着写可能会error,这里的 skins[skin],是判断皮肤列表中是否有需要更换的皮肤。2、因为spine往往意味着异步加载,换肤时也经常出现频繁异步的情况,所以下一步我们要可以判断当前spine组件里是否已经加载好了spine文件。换肤前隐藏好需要换肤的节点,避免穿帮;官网文档的换肤流程太简化,对于实际使用来说会有各种各样的问题。1、首先获取对应的spine组件。这里的skin自然是外部传入的需要换肤的皮肤名。

tc654321的博客 1817

poj2774 后缀数组

/* poj2774 题意: 给两个字符串(长度不超过100000),求最长公共子串 用我学过的平常的暴力或kmp的方法都会超时,所以刚好可以用来 当做后缀数组的入门题 在下边借用一些论文里的知识再加上自己的一些理解 一、后缀数组的实现 后缀:就是从某个位置i开始到整个字符串末尾的特殊的字符串,用suffix(i)表示 大小比较:关于字符串的大小比较,是指通常所说的“字典顺序”比较,也 就是对于

wenzhunpu的专栏 494

IPsec (主模式,野蛮模式)

IPsec vpn的主模式和野蛮模式

七汣的博客 3414

POJ2774 后缀数组

Long Long Message Description The little cat is majoring in physics in the capital of Byterland. A piece of sad news comes to him these days: his mother is getting ill. Being worried about spending ...

weixin_30408309的博客 161

COD论文笔记VSCode: General Visual Salient and Camouflaged Object Detection with 2D Prompt Learning

VSCode模型通过引入领域特定提示和任务特定提示,结合提示区分损失,成功地在单一模型中处理多个显著目标检测和伪装目标检测任务。这种方法不仅提高了模型的性能,还展示了其对未见任务的泛化能力。作者使用 Visual saliency transformer ICCV 2021 作为baseline model这张图展示了VSCode模型的整体框架,特别强调了2D提示学习方法。

985小菜鸡 1627

Code Composer Studio 12.0.0版本 官方例程导入实战指南

本文详细介绍了在Code Composer Studio 12.0.0版本中,如何利用内置的Resource Explorer工具高效导入官方例程的完整实战指南。通过分步讲解定位开发板、导入工程、配置编译器及调试验证等关键操作,帮助开发者快速上手TI微控制器开发,避免常见错误,有效提升学习与开发效率。

weixin_29169899的博客 121

【POJ2774】后缀数组

【POJ2774】 题目大意 给定两个字符串a,b求它们的最长公共字串 len(a),len(b) &lt;= 1e5   分析 构造一个串s,s=a+'$'+b,这样可以保证s的后缀的LCP不会跨过a,b 那么公共字串就转化成了s的后缀的LCP 可以发现后缀排名离得越近的LCP就越长,那么答案就产生在height数组中 求出s的height[]和sa[] 答案就是MAX{ he...

Shelter 284

Python批量注册脚本开发详细

开发一个Python批量注册脚本需要考虑多个方面,包括目标网站的注册流程、验证码处理、请求发送、数据存储等。以下是一个详细的开发流程和代码示例,用于实现基本的批量注册功能。

nsp202505的博客 3346

POJ 2774 后缀数组 解题报告

Long Long MessageDescriptionThe little cat is majoring in physics in the capital of Byterland. A piece of sad news comes to him these days: his mother is getting ill. Being worried about spending so mu

onepointo 506

uniapp [安卓苹果App端] - 详细实现PDF预览功能在线预览PDF文档,Uniapp App端实现pdf文件预览在线预览pdf二进制文件流、本地pdf文档、PDF文件地址url路径(解决白屏

uni-app,安卓Android,苹果ios,安卓app端,苹果App端,uniapp苹果安卓app,uniapp在线预览pdf功能,在安卓苹果app平台实现PDF的预览查看,uniappApp端实现pdf文件预览,UNIAPP在线预览PDF文档,Uniappapp在线预览pdf文件流,从后端接口里获取pdf文件如何转成链接预览,预览pdf的插件,uni-app的pdf预览功能,uniapp使用pdf.js插件预览pdf文件,预览pdf白屏没有报错,打开后没反应,打开是空白,加载PDF时发生错误,如

🏆 前端领域优质创作者 1万+

Yolov8-pose关键点检测:loss优化 | LRM loss困难样本挖掘,提升难样本、遮挡物等检测精度

LRM loss应用到能够大幅提升pose遮挡物性能

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1715

poj 2774 后缀数组(模板题)

点击打开链接 模板 #include #include #include #include using namespace std; const int M =1e6+20; int len,len1,len2; char s[M]; int sa[M];//sa[i]排名i的后缀编号 int c[M];//计数数组 c[i]=j表示关键字<=i的有j个 int t1[M]

Masamiiiiii 703

【51单片机仿真】基于51单片机设计的多功能电子时钟日历(实时时钟闹钟秒表温度检测)系统__资料编号5

该项目是基于单片机的多功能电子时钟系统,集成了时间显示、闹钟设置、秒表功能以及温度显示等功能。主要硬件包括1602液晶显示屏、DS1302时钟芯片、DS18B20温度传感器和蜂鸣器。系统通过按键进行时间和闹钟的设置,并实时显示当前时间和温度。

嵌入式阿齐Archie 2万+

POJ-2774 后缀数组模板学习

题目链接:https://cn.vjudge.net/problem/POJ-2774 参考:https://www.cnblogs.com/deadpool66/p/5989726.html 题意:有两个字符串,求他们最长连续公共字串。 思路:先将两个字符串连接,中间用一个‘¥’隔开,用后缀数组求出height数组,这样防止数组相互交叉。height[i]代表sa[I-1]与sa[i]的最长公共...

A 208

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

POJ - 2774 后缀数组 Height数组模板

求2个字符串最长公共字串。 先合并2个字符串 一定是Height[i],且sa[i],sa[i-1]分别在2个字符串的位置,就一定是公共字串。 为什么呢? 首先我们先合并,(注意:在第一个字符串后面加一个不再范围内的字符,隔开2个字符,这样两个字符串的最长公共字串就转化成了新的字符串后缀的最长公共前缀(满足2个后缀分别在2个字符串原来的位置)。我看很多人没加分隔符,那这组数据就能hack:...

bjfu170203101的博客 328

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

POJ 2774( 后缀数组模板 )

注意 :swap( x[N],y[N] ) 复杂度为O(N),不要直接swap //最长公共子串 #include <cstdio> #include<cstring> #include<iostream> using namespace std; typedef long long LL; typedef int lint; c...

ehdhg13455的博客 257

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

后缀数组小模板 POJ 2774

模板题,把俩串连起来求后缀数组,通过height数组解 当模板用咯 #include #include #include #include #include const int maxn = 200000 + 7; int cmp(int *r, int a, int b, int l) { return (r[a] == r[b]) && (r[a + l] == r[b

THE___BEST的专栏 459

POJ 2774 Long Long Message 后缀数组模板题

http://poj.org/problem?id=2774 题意:给你两个字符串,问其中重叠的子串的最大长度; 做法:直接连起来,跑一个后缀数组,求height数组就完了,但不过注意zzzbcd cdbcdcd的情况所以中间加一个其他字符隔开。 #include<iostream> #include<algorithm> #include<stdio.h&g...

KXL5180的博客 230

Long Long Message 【POJ - 2774】【后缀数组模板】

题目链接 题意就是找两个字符串中最大相同子串。 总结一些写后缀数组的经验教训吧,第一次写,就WA了10+次,一是没有考虑到桶排不是只有字符串中字符的个数,而是会扩展到字符串的长度,所以在这里的时候我不能只开128,应该去开到N的长度。再者,就是对于height数组的处理,height求的是lcp(i, i-1),其中,i和i-1是对应的sa[i]和sa[i-1],所以在字符串中的位置仍...

既然弱小,就只顾变强就是了 187

POJ2774 & 后缀数组模板题

题意:   求两个字符串的LCP SOL:   模板题.连一起搞一搞就好了...主要是记录一下做(sha)题(bi)过程心(cao)得(dan)体(xin)会(qing)   后缀数组概念...还算是简单的,过程也非常清晰...就是老人家...马丹代码那么写意真的是...每一句代码的意思大概都知道但是不能很准确的描述...自己实现又漏洞百出...所以虽然避免了抄模板...但还是相当于一个默...

weixin_30562507的博客 85

POJ 2774 Long Long Message (后缀数组模板)

我的第一道后缀数组。后缀数组都好理解,就是计数排序那个部分没有理解太明白。 本道题是求两个串的最长公共子串。论文中有提到一个串的情况下,这时候我们把两个串拼接起来就变为论文中的一个串的情况,就是找出height数组中最大值。万一最大的两个串在都在前面或者都在后面...,所以我们加个判断,sa[i]和sa[i-1]不在一起。而且还要把两个串拼接部分加上一些非小写字母的字符分隔开,防止出错。

334

poj 2774 Long Long Message 后缀数组模板

先存一下后缀数组DA算法加上求height

Enmity_Dark 666

POJ 2774 Long Long Message (后缀数组模板)

借用罗大神的模板,开始搞后缀数组 #include #include #include #include using namespace std; #define N 222222 /****后缀数组模版****/ #define F(x)((x)/3+((x)%3==1?0:tb)) //F(x)求出原字符串的suffix(x)在新的字符串中的起始位置 #define G(x)((x)

Paradiser 968

后缀数组(一)(模板题poj2774)

#include #include #include using namespace std; const int maxn=200010; char ss[maxn]; int sa[maxn],t[maxn],t2[maxn],c[maxn],n,s[maxn]; int Rank[maxn],height[maxn]; void get_sa(int m) { int i,*x

mtxxxx的blog 736
上一篇: poj 3090 欧拉函数
下一篇: poj 1236 强连通分量+缩点
HuanTongH
博客等级 码龄12年 7粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值