hihoCoder #1032 : 最长回文子串(manacher)

【最长回文子序列】hihocoder1032 C++ 问题描述 Time Limit:1000ms Case Time Limit:1000ms Memory Limit:256MB 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。 这一天,他们遇到了一连串的字符串,于是小Hi就向小Ho提出了那个经典的问题:“小Ho,你能不能分别在这些字符串中找到它们每一个的最长回文子串呢?”... 阅读详情

#1032 : 最长回文子串

时间限制: 1000ms
单点时限: 1000ms
内存限制: 64MB

描述

   小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。

   这一天,他们遇到了一连串的字符串,于是小Hi就向小Ho提出了那个经典的问题:“小Ho,你能不能分别在这些字符串中找到它们每一个的最长回文子串呢?”

   小Ho奇怪的问道:“什么叫做最长回文子串呢?”

   小Hi回答道:“一个字符串中连续的一段就是这个字符串的子串,而回文串指的是12421这种从前往后读和从后往前读一模一样的字符串,所以最长回文子串的意思就是这个字符串中最长的身为回文串的子串啦~”

   小Ho道:“原来如此!那么我该怎么得到这些字符串呢?我又应该怎么告诉你我所计算出的最长回文子串呢?

   小Hi笑着说道:“这个很容易啦,你只需要写一个程序,先从标准输入读取一个整数N(N<=30),代表我给你的字符串的个数,然后接下来的就是我要给你的那N个字符串(字符串长度<=10^6)啦。而你要告诉我你的答案的话,只要将你计算出的最长回文子串的长度按照我给你的顺序依次输出到标准输出就可以了!你看这就是一个例子。”

提示一  提示二  提示三  提示四
样例输入
3
abababa
aaaabaa
acacdas
样例输出
7
5
3
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<set>
#include<map>

#define L(x) (x<<1)
#define R(x) (x<<1|1)
#define MID(x,y) ((x+y)>>1)

#define eps 1e-8
typedef long long  ll;
using namespace std;
#define N 10000005

char a[N*2];
char b[N*2];
int R[N*2];

int solve()
{
    int id=0;
    R[0]=0;
    int len=strlen(b);
    for(int i=1;i<len;i++)
    {
        if(id+R[id]>i)
        {
            R[i]=min(R[id-(i-id)],id+R[id]-i);
        }
        else R[i]=1;
        while(b[i+R[i]]==b[i-R[i]]) R[i]++;
        if(i+R[i]>id+R[id]) id=i;
    }
    int ans=0;
    for(int i=0;i<len;i++) ans=max(ans,R[i]);
    return ans-1;
}

int main()
{
    int i,j,t;
    cin>>t;
    while(t--)
    {
        scanf("%s",a);
        int len=0;
        b[len++]='$';
        for(int i=0;a[i];i++)
        {
            b[len++]='#';
            b[len++]=a[i];
        }
        b[len++]='#';
        b[len++]='\0';
        cout<<solve()<<endl;
    }
    return 0;
}






从ENVI SARscape到SNAP:手把手教你迁移哨兵1 GRD数据预处理流程(含避坑指南) 本文详细介绍了从ENVI SARscape迁移到SNAP处理哨兵1 GRD数据的全流程,包括工具哲学差异、数据准备注意事项、核心处理流程等效实现及地形校正技巧。特别针对雷达数据预处理中的常见陷阱提供避坑指南,帮助用户高效完成工具迁移并确保结果质量。 阅读详情

相关推荐

LSTM量化选股实战:从数据清洗到回测归因的工程化闭环

LSTM(长短期记忆网络)是一种专为建模长程依赖而设计的循环神经网络,其门控机制能有效应对金融时序数据的非线性、高噪声与动态演化特性。相比传统统计模型或简单RNN,LSTM在股价趋势建模中展现出更强的鲁棒性与泛化能力,尤其适合处理日频多因子时序信号。其技术价值不仅在于提升预测精度,更在于支撑可归因、可审计的量化策略工程实践——从特征构建、标签定义到滚动回测,每一步都需严防未来信息泄露与过拟合风险。典型应用场景包括A股多因子选股、行业轮动信号生成及Alpha组合优化。本文聚焦LSTM在真实量化场景中的落地难点

weixin_33158887的博客 398

子序列解题模板:最长回文子序列

预计阅读时间:6 分钟子序列问题是常见的算法问题,而且并不好解决。首先,子序列问题本身就相对子串、子数组更困难一些,因为前者是不连续的序列,而后两者是连续的,就算穷举都不容易,更别说求解...

fdl123456的博客 1128

abaqus 根据坐标施加载荷- Analytical Field 载荷映射

在一些类型的分析中,需要将按位置分布的载荷施加到结构上,比如流体分析导出了结构的气动载荷、或者温度载荷,需要将压强分布、温度分布载荷施加到固体上。这种分析可以使用abaqus中的Analytical Field实现。 1 例子 1.1 结构 一个100*100mm的面,面的载荷分布函数为p=(x2+y2)0.5/((20.5)*100) MPa,即(0, 0)的压强为0,(100, 100)的压强为1。 1.2 载荷 载荷函数:p=(x^2+y^2)^0.5/((2^0.5)*100) in exce.

shengyutou的博客 2万+

hihocoder _训练赛第一周_最长回文子串(不完美)

可以基本实现时间复杂性上 #include //#include #include using namespace std; int count; int max_c; void c(string s)//calculate result {  for(int i=0;i  {   int low=i,high=i;   int temp_c;   if(s[i]=='

u012329934的专栏 683

【个人记录】CentOS7升级glibc至2.28

由于CentOS7系统已经停止支持, 虽然大部分业务已经迁移至OpenEuler,但仍然有部分业务系统跑在CentOS7上。在尝试部署新业务环境时经常会提示如下错误(以code-server运行需要的node 20为例)node -v为了保障业务可正常运行,通常采用Docker继承好的node环境进行部署,但部分场景还是需要宿主机使用新版glibc版本。本文记录本人一次成功升级glibc(2.17=>2.28)的步骤。

喵呜 3883

滑模控制算法(SMC)讲解-案例(附C代码)

该文章介绍了滑模控制算法的原理实现步骤,特点及关键问题,最后以车辆控制案例来讲解滑模控制的整个步骤实现

heda3的博客 4111

LeetCode_3 最长回文子序列

题目: 给定一个字符串 s ,找到其中最长的回文子序列,并返回该序列的长度。可以假设 s 的最大长度为 1000 。 示例 1: 输入: "bbbab" 输出: 4 一个可能的最长回文子序列为 "bbbb"。 示例 2: 输入: "cbbd" 输出: 2 一个可能的最长回文子序列为 "bb"。 提示: 1 <= s.length <= 1000 s 只包含小写英文字母 题意解释   最长子序列区别于最长回文子串,子串必须是连续的,而子序列则可以跳跃,   例如:aabcaa的最长回

qq_38202625的博客 493

FAST-LIVO2 源码精读(十六):接入自定义传感器——多雷达适配与内外参标定

本文是「FAST-LIVO2 激光-惯性-视觉里程计源码精读」专栏第十六篇。上一篇拆解了中每个关键参数的物理含义与调参路径,并反复强调外参RclPcl与时间偏移配错即全局失效;本篇承接这一悬念,回答更前置的工程问题——如何把 FAST-LIVO2 接到一套全新硬件上:新雷达如何通过的类型分支适配、相机内参与畸变模型如何配置、两组外参与时间偏移如何标定出来并填入 YAML,最后给出一份落地检查清单。

PX4-SLAM-PNC 199

516. 最长回文子序列

1. 题目描述 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。 示例 1: 输入:s = “bbbab” 输出:4 解释:一个可能的最长回文子序列为 “bbbb” 。 示例 2: 输入:s = “cbbd” 输出:2 解释:一个可能的最长回文子序列为 “bb” 。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-pal

梦否 362

MIKE水动力笔记5_建立水动力模型

前文已经讲了如何制作网格文件(.mdf文件),这一博文就讲如何建立水动力模型。

晏长街的博客 3万+

6、核函数与再生核希尔伯特空间:原理、应用与实践

本文系统介绍了核函数与再生核希尔伯特空间(RKHS)的理论基础、核心性质及其在机器学习和信号处理中的广泛应用。文章从核方法的优势出发,阐述了其在非线性建模、正则化和算法核化方面的独特价值,并深入探讨了正定核、Mercer定理、表示定理等关键理论。通过构建多种标准核与工程专用核,展示了核函数的设计灵活性。结合支持向量回归(SVR)模型与多个MATLAB示例,详细说明了核方法的实际应用流程与操作技巧。最后,总结了核方法的应用领域、未来发展方向及学习实践建议,为读者提供了一套完整的理论与实践指南。

z2a3b4c5d的博客 143

最长回文子序列LPS

最长回文子序列 - LeetCode (中国) 原文地址:https://mintlucas.github.io/2019/04/21/最长回文子序列LPS/ 题目描述: 给定一个字符串s,找到其中最长的回文子序列。可以假设s的最大长度为1000。 示例 1: 输入: "bbbab" 输出: 4 一个可能的最长回文子序列为 "bb...

USTC_Lucas 489

实战落地!Python抓取股票历史数据:开盘/收盘/成交量全维度爬取(附数据清洗+可视化)

股票历史数据抓取的核心是“数据准确性+完整性”,网页爬取适合小批量、个性化需求,API调用适合批量、标准化需求。多市场数据抓取:适配港股(00700.HK)、美股(AAPL)的抓取逻辑;高频数据抓取:抓取分钟级、小时级行情数据,用于短线量化策略;财务数据扩展:抓取市盈率、市净率、净利润等财务指标,结合价格数据做基本面分析;量化策略回测:将清洗后的数据接入Backtrader、VNPY等量化框架,验证策略有效性。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1739

马拉车算法 Manacher + 例题: hihocoder #1032 最长回文子串

【马拉车Manacher算法】 引入: 计算字符串的最长回文字串最朴素的算法就是枚举字符串的每一个子串并判断这个子串是否为回文串,这个算法的时间复杂度为O(n^3),显然无法令人满意。稍微优化的算法是枚举回文串的中点,这里要分为两种情况,一种是回文串长度是奇数的情况,另一种是回文串长度是偶数的情况,枚举中点再判断是否是回文串,这样能把算法的时间复杂度降为O(n^2),但是当n比较大的时候仍然无...

菜鸡成长史 336

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Hihocoder #1032 : 最长回文子串 (Manacher算法)

#1032 : 最长回文子串 时间限制:1000ms 单点时限:1000ms 内存限制:64MB 描述    小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。    这一天,他们遇到了一连串的字符串,于是小Hi就向小Ho提出了那个经典的问题:“小Ho,你能不能分别在这些字符

LzyRapX 808

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

hihocoder #1032 : 最长回文子串 Manacher算法

题目链接: https://hihocoder.com/problemset/problem/1032?sid=868170 最长回文子串 时间限制:1000ms内存限制:64MB 问题描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。 这一天,他们遇到了一连串的字符串,于是小Hi就向小Ho提出了那个经典的问题:“小H...

weixin_30378311的博客 127

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

hihoCoder #1032 : 最长回文子串 - (Manacher算法)

题目连接:http://hihocoder.com/problemset/problem/1032 题意:给出一个字符串,在字符串中找到它的最长回文子串,输出其长度。 解析: 根据提示一和提示二有如下中心拓展方法,但是很明显有更优的算法来做,了解到这是Manacher算法,题解参考:https://www.cnblogs.com/xcw0754/p/4442652.html, 中心拓展代码

Orz 253

hihocoder #1032 : 最长回文子串(动态规划+manacher算法)

题目链接:http://hihocoder.com/problemset/problem/1032 这道题应该是要求用manacher算法解决的,用动态规划复杂度太高,显示超时,但站在解决问题的角度,还是把两种方法都贴出来。 1.动态规划 首先是动态规划,动态规划要找状态转移方程,具体如下。 不熟悉动态规划思想的可以参考下这篇博文,写的很好http://blog.youkuaiyun.com/shin

Cas 514

hihoCoder hiho一下 第一周 #1032 : 最长回文子串 (Manacher)

题意:给一个字符串,求最长回文子串的长度。 思路: (1)暴力穷举。O(n^3) -----绝对不行。     穷举所有可能的出现子串O(n^2),再判断是否回文O(n)。就是O(n*n*n)了。 (2)记录位置。O(n^3) -----绝对不行。     先扫一遍,记录每个字符在上一次出现的位置pos。每次考虑第i个字符,如果回文子串包括 i 的话,那么肯定在i...

weixin_30650039的博客 137

hihoCoder #1032 : 最长回文子串 [ Manacher算法--O(n)回文子串算法 ]

传送门 #1032 : 最长回文子串 时间限制:1000ms 单点时限:1000ms 内存限制:64MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。 这一天,他们遇到了一连串的字符串,于是小Hi就向小Ho提出了那个经典的问题:“小Ho,你能不能分别在这些字符串...

weixin_33909059的博客 89

hihocoder-1032 最长回文子串(Manacher)

这个算法和其他很多算法都是利用已经知道的信息降低时间复杂度,不过空间开销有点大

idealism_xxm的专栏 826

[hihoCoder] #1032 : 最长回文子串

时间限制:1000ms 单点时限:1000ms 内存限制:64MB 描述    小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。    这一天,他们遇到了一连串的字符串,于是小Hi就向小Ho提出了那个经典的问题:“小Ho,你能不能分别在这些字符串中找到它们每一个的最长回文子串呢?”    小Ho奇怪的...

weixin_33798152的博客 140

hihocoder1032 最长回文子串

传说中的Manacher算法,算法的核心就在这一句上了:p[i] = min(p[2*id-i], p[id] + id - i);     这个算法要解决的就是一个字符串中最长的回文子串有多长。这个算法可以在O(n)的时间复杂度内既线性时间复杂度的情况下,求出以每个字符为中心的最长回文有多长,这个算法有一个很巧妙的地方,它把奇数的回文串和偶数的回文串统一起来考虑了。这一点一直是在做回文串问

struggle6688的专栏 550

hihocoder 1032 : 最长回文子串(Manacher)

之前做过类似的题,只是理解了,还没达到驾轻就熟,想到即敲出的地步,所以再练一次。 顺带将Manacher算法思想解释一遍,加强印象,也算作分享吧。 Manacher我们用f(x)表示以x位置为中心的回文串的长度 j相对i的对应位置是j’ 那么f(j)与f(j’)和f(i)有什么关系呢。 先看第一张图,下面那条横杠表示f(i),那么,既然j’与j相对应,j’的回文串长度已经求出,那么j

YiShi's Blog 3134

hihocoder1032:最长回文字串

hihocoder1032:最长回文字串题意:就是给你一个字符串:让你在字符串中找到它的最大的回文字串。思路:这道题学到了一个新的算法,manacher求最长回文字串的算法。 首先推荐一个博客[这篇文章是我见过的讲解的最清楚的文章了,推荐给大家] Manacher算法: 首先我们设置p[i]表示以i为中心的回文串的长度,假设现在扫描到了i+k这个位置,那么maxlen代表的就是在(i+k)之前

ACM_hades的梦想之路 678

最长回文子串LPS(Hihocoder1032)

题目来源:hihicoder最长回文子串 题目中的题解没看懂,在网上看了别人的BLOG,看懂了这中转移方程 : p[i] >= min(mxlen-i,p[2*id-i] ) ; 在hihocoder中用string会超时,所以建议用char[] 下面代码用了5种方法 #include #include using namespace std; #define MAX 2001007 s

arz74的博客 456
上一篇: hihoCOder #1015 : KMP算法
下一篇: 2017微软秋季校园招聘在线编程笔试
左眼皮跳跳~
博客等级 码龄13年 17粉丝 400原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值