首页 > 编程语言 >马拉车算法

马拉车算法

时间:2024-03-14 16:57:22浏览次数:23  
标签:int Luogu char 算法 P3805 include 拉车

Luogu P3805【模板】manacher 算法

 1 // Luogu P3805 【模板】manacher 算法
 2 #include <iostream>
 3 #include <cstring>
 4 #include <algorithm>
 5 using namespace std;
 6 
 7 const int N=3e7;
 8 char a[N],s[N];
 9 int d[N]; //回文半径函数 
10 
11 void get_d(char*s,int n){
12   d[1]=1;
13     for(int i=2,l,r=1;i<=n;i++){
14         if(i<=r)d[i]=min(d[r-i+l],r-i+1);
15         while(s[i-d[i]]==s[i+d[i]])d[i]++;
16         if(i+d[i]-1>r)l=i-d[i]+1,r=i+d[i]-1;
17         // printf("i=%d d=%d [%d %d]\n",i,d[i],l,r);
18     }  
19 }
20 int main(){
21   //改造串
22   scanf("%s",a+1);
23   int n=strlen(a+1),k=0;
24   s[0]='$',s[++k]='#';        
25   for(int i=1;i<=n;i++) 
26     s[++k]=a[i],s[++k]='#';
27   n=k;
28   
29   get_d(s,n);//计算d函数
30   int ans=0;
31   for(int i=1;i<=n;i++)
32     ans=max(ans,d[i]);
33   printf("%d\n",ans-1);
34   return 0;
35 }

 

练习:

P3501 [POI2010] ANT-Antisymmetry - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

标签:int,Luogu,char,算法,P3805,include,拉车
From: https://www.cnblogs.com/rw666/p/18073240

相关文章

  • PBKDF2算法:保障密码安全的利器
    PBKDF2算法起源:PBKDF2(Password-BasedKeyDerivationFunction2)算法是一种基于密码的密钥派生函数,最初由RSA实验室的密码学家提出,用于从密码中生成密钥。PBKDF2算法的设计目的是增加破解密码的难度,提高密码的安全性。PBKDF2在线加密|一个覆盖广泛主题工具的高效在线平台(......
  • 【算法】二分查找——BinarySearch
    一、概述二分查找又称折半查找,是一种能够大幅减少时间复杂度的查找方法,但是二分查找要求线性表必须词用顺序储存结构,而且表中元素按关键字有序排列。在后续讨论中,我们假设有序表递增有序。二分查找中使用的术语:目标Target——你要查找的值索引Index——你要查找的当前......
  • 代码随想录算法训练营第四十六天 | 背包问题总结篇!,关于多重背包,你该了解这些!,139.单词
    背包总结听说背包问题很难?这篇总结篇来拯救你了年前我们已经把背包问题都讲完了,那么现在我们要对背包问题进行总结一番。背包问题是动态规划里的非常重要的一部分,所以我把背包问题单独总结一下,等动态规划专题更新完之后,我们还会在整体总结一波动态规划。关于这几种常见......
  • ACM算法竞赛入门——C++基础语法(匠心之作,2.5万字总结,0基础教学,纯干货)建议收藏!!!
    xcx:主流语言这么多,为什么acm算法竞赛要用C++呢?shy:C++在竞赛中实现算法和数据结构时具有更高的执行效率,对于一些需要处理大量数据和复杂算法的竞赛题目来说,C++能够提供更快的执行速度和更低的资源消耗,这对于算法竞赛中的性能要求至关重要。hwjw:除此之外,C++还有什么其他的......
  • 公钥密码学算法类型综述
    作者:网安新生研讨课第一小组采用协议CCBY-NC,原文链接:https://www.cnblogs.com/Multya/p/18072514概念公开密钥密码学(英语:Public-keycryptography)也称非对称式密码学(英语:Asymmetriccryptography)是密码学的一种算法,它需要两个密钥,一个是公开密钥,另一个是私有密钥;公钥用作......
  • 数据结构算法系列----高精度加法(大数相加)、处理前导零
    目录一、为什么要使用高精度加法二、处理前导零1、为什么要处理前导零2、处理前导零的代码三、处理大数相加四、完整代码即例题一、为什么要使用高精度加法  当处理远大于longlong数据范围的数时,通常会将这些大数表示为字符串,然后通过字符串的方式进行加减乘除......
  • 基于遗传优化的协同过滤推荐算法matlab仿真
    1.算法运行效果图预览  最后得到推荐的商品ID号:推荐商品的ID号:ans=98381758221911149021490212352247322307123499117901547165501655016550......
  • 【趣味学算法】04_与谁结婚(逻辑推断|条件组合)
    注:本系列仅为个人学习笔记,学习内容为《算法小讲堂》(视频传送门),通俗易懂适合编程入门小白,需要具备python语言基础,本人小白,如内容有误感谢您的批评指正有三对情侣要结婚,假设三位靓仔分别为A、B、C,三位小仙女为X、Y、Z。他们三对情侣比较皮,准备让吃瓜路小由鱼来猜!小由鱼......
  • 京东广告算法架构体系建设--高性能计算方案最佳实践
    1、前言推荐领域算法模型的在线推理是一个对高并发、高实时有较强要求的场景。算法最初是基于Wide&Deep相对简单的网络结构进行建模,容易满足高实时、高并发的推理性能要求。但随着广告模型效果优化进入深水区,基于Transformer用户行为序列和Attention的建模逐渐成为主流,这个阶段......
  • c语言 线性搜索算法
            线性搜索被定义为一种顺序搜索算法,从一端开始,遍历列表中的每个元素,直到找到所需的元素,否则搜索将继续,直到数据集的末尾。 线性搜索算法 线性搜索算法如何工作?在线性搜索算法中:        1、每个元素都被视为该键的潜在匹配项并进行相同检查。 ......