首页 > 其他分享 >马拉车Mananer(求最长回文子序列)

马拉车Mananer(求最长回文子序列)

时间:2024-04-17 22:47:20浏览次数:23  
标签:cout int st Mananer 序列 回文 32000005 拉车

直接上板子
直接输出最长回文子序列的长度

#include<bits/stdc++.h>
#define int long long
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
char s[32000005],st[32000005];
int p[32000005];
int change()
{
    int len=strlen(st);
    int j=2;
    s[0]='^';
    s[1]='$';
    for (int i=0;i<len;i++)
    {
        s[j++]=st[i];
        s[j++]='$';
    }
    s[j]='&';
    return j;
}
int Manacher()
{
    int len=change(),mid=1,mx=1,ans=-1;
    for (int i=1;i<len;i++)
    {
        if (i<mx)
            p[i]=min(mx-i,p[mid*2-i]);
        else
            p[i]=1;
        while (s[i-p[i]]==s[i+p[i]])
            p[i]++;
        if (mx<i+p[i])
        {
            mid=i;
            mx=i+p[i];
        }
        ans=max(ans,p[i]-1);
    }
    return ans;
}
 
signed main(){
    IOS
    int T=1;
    //cin>>T;
    while(T--)
	{
        cin>>st;
        cout<<Manacher();
		
        
    }
}

标签:cout,int,st,Mananer,序列,回文,32000005,拉车
From: https://www.cnblogs.com/yzzyang/p/18141952

相关文章

  • Python案例:输出公元后到目前为止全部回文日期
    一、回文日期一个日期,如果顺读和倒读都一样,那么就称之为回文日期,比如今天:20211202,就是一个神奇的回文日期。二、提出任务输出公元后的全部回文日期要求每行输出五个回文日期统计总共有多少个回文日期三、完成任务(一)涉及知识点1、time模块time模块有两个常用函数time()......
  • 27天【代码随想录算法训练营34期】第七章 回溯算法part03(● 39. 组合总和 ● 40.组合
    39.组合总和怎么才能避免重复?比现在数小的数就别append到path里面了,之前肯定都试过了classSolution:defcombinationSum(self,candidates:List[int],target:int)->List[List[int]]:result=[]candidates.sort()self.backtracking(cand......
  • 516. 最长回文子序列
    题目链接:本题考察区间\(dp\)。设\(f[i][j]\)表示子串\(i\simj\)中的最长回文子序列的长度。思考状态转移方程。因为是判断回文的问题,考虑首尾元素是否相同。若首尾元素相同,则考虑去掉首尾元素之后子串的最长回文子序列的长度+2(首、尾元素各一个)反之若首尾元素不相同......
  • C++程序分享--常见编程面试题:判断字符串是否为回文串
    关注我,持续分享逻辑思维&管理思维;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;有意找工作的同学,请参考博主的原创:《面试官心得--面试前应该如何准备》,《面试官心得--面试时如何进行自我介绍》, 《做好面试准备,迎接2024金三银四》。【图解《程序员面试常见的十大算法......
  • Leetcode 866. 回文质数
    https://leetcode.cn/problems/prime-palindrome/description/给你一个整数n,返回大于或等于n的最小回文质数。一个整数如果恰好有两个除数:1和它本身,那么它是质数。注意,1不是质数。例如,2、3、5、7、11和13都是质数。一个整数如果从左向右读和从右向左读是相同的,那......
  • 顺序栈功能函数(包括判断回文、数值转化、括号匹配)
    一,具体代码#include<iostream>#include<stdlib.h>usingnamespacestd;#defineOK1#defineERROR0#defineMAXSIZE100typedefintElemType;typedefintStatus;typedefstruct {   ElemType*elem;   inttop;}Sqstack;StatusInitStack(Sqstack......
  • P1435 [IOI2000] 回文字串
    题目:链接:https://www.luogu.com.cn/problem/P1435观察到:在里面插入字符不会影响外面的配对所以以dp[i][j]记录字符串s下标从i到j变化到回文串步数,那么递推公式:if(s[i]==s[j])dp[i][j]=dp[i+1][j-1];elsedp[i][j]=min(dp[i+1][j],dp[i][j-1])+1;就是说如果最外面能......
  • 最长回文子串
    letcode最长回文子串给你一个字符串s,找到s中最长的回文子串如果字符串的反序与原始字符串相同,则该字符串称为回文字串。示例1输入:s="babad"输出:"bab"解释:"aba"同样是符合题意的答案。示例2:输入:s="cbbd"输出:"bb"解题思路此题可以用动态规划的思想去解决......
  • 回文素数----函数
    题目题目描述如果一个数即是回文数又是素数(质数)的话,则称这个数为回文素数。其中回文数的定义为,如果一个数从左边看和从右边看一样,则该数称为回文数。如数字12321就是个回文数。请输出从100~n的所有回文素数。输入格式一个整数n。输出格式从100~n的所有回文素数,空格......
  • Offer必备算法21_回文串dp_六道力扣题详解(由易到难)
    目录①力扣647.回文子串解析代码②力扣5.最长回文子串解析代码③力扣1745.分割回文串IV解析代码④力扣132.分割回文串II解析代码⑤力扣516.最长回文子序列解析代码⑥力扣1312.让字符串成为回文串的最少插入次数解析代码本篇完。①力扣647.回文子串64......