简单来说这是个很水的东西。有点dp的思想吧。推荐两个博客,很详细。

http://blog.csdn.net/xingyeyongheng/article/details/9310555

http://blog.csdn.net/ggggiqnypgjg/article/details/6645824

然后以为随便学点然后去复习,结果……呵呵。什么鬼数据,两行之间用空行隔开……没看到一直wa半节课……

hdu3068最长回文

  1. var
  2. s1,s2:ansistring;
  3. s:array[..]of char;
  4. p:array[..]of longint;
  5. max,ans,mid,i,len:longint;
  6. ch:char;
  7. flag:boolean;
  8.  
  9. function min(x,y:longint):longint;
  10. begin
  11. if x<y then min:=x
  12. else min:=y;
  13. end;
  14.  
  15. begin
  16. while not eof do begin
  17. readln(s1);
  18. readln(s2);
  19. len:=length(s1);
  20. fillchar(p,sizeof(p),);
  21. s[]:='$';
  22. s[]:='#';
  23. for i:= to len do begin
  24. s[i*]:=s1[i];
  25. s[i*+]:='#';
  26. end;
  27. len:=len*+;
  28. s[len]:='#';
  29. mid:=;
  30. max:=;
  31. ans:=;
  32. for i:= to len do begin
  33. if max>i then
  34. p[i]:=min(p[mid*-i],max-i)
  35. else p[i]:=;
  36. while s[i+p[i]]=s[i-p[i]] do inc(p[i]);
  37. if p[i]+i>max then begin
  38. max:=p[i]+i;
  39. mid:=i;
  40. end;
  41. if ans<p[i] then ans:=p[i];
  42. end;
  43. writeln(ans-);
  44. end;
  45. end.

简单来说就是判断是否被前面的覆盖到,如果有,根据对称性可以可得一个长度(min=(p[mid<<1-i],max-i)),如果没有就长度为1,然后再根据这个长度扩展,顺便更新下最大值。

这渣状态……!!

hdu3068最长回文(Manacher算法)的更多相关文章

  1. HDU3068 最长回文 Manacher算法

    Manacher算法是O(n)求最长回文子串的算法,其原理很多别的博客都有介绍,代码用的是clj模板里的,写的确实是异常的简洁,现在的我只能理解个大概,下面这个网址的介绍比较接近于这个模板,以后再好好 ...

  2. [hdu3068 最长回文]Manacher算法,O(N)求最长回文子串

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3068 题意:求一个字符串的最长回文子串 思路: 枚举子串的两个端点,根据回文串的定义来判断其是否是回文 ...

  3. hdu 3068 最长回文 manacher算法(视频)

    感悟: 首先我要Orz一下qsc,我在网上很难找到关于acm的教学视频,但偶然发现了这个,感觉做的很好,链接:戳戳戳 感觉这种花费自己时间去教别人的人真的很伟大. manacher算法把所有的回文都变 ...

  4. hdu_3068 最长回文(Manacher算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3068 最长回文 Time Limit: 4000/2000 MS (Java/Others)    M ...

  5. HDU3068 最长回文 MANACHER+回文串

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=3068 Problem Description 给出一个只由小写英文字符a,b,c...y,z组成的字符 ...

  6. hdu-3068-最长回文(manacher算法模板)

    题目链接 /* Name:hdu-3068-最长回文 Copyright: Author: Date: 2018/4/24 16:12:45 Description: manacher算法模板 */ ...

  7. hdu3068 最长回文 manacher

    给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度.回文就是正反读都是一样的字符串,如aba, abba等 manacher裸题 #include<stdio. ...

  8. HDU 3068 最长回文 manacher 算法,基本上是O(n)复杂度

    下面有别人的比较详细的解题报告: http://wenku.baidu.com/view/3031d2d3360cba1aa811da42.html 下面贴我的代码,注释在代码中: #include ...

  9. HDU 3068 最长回文 Manacher算法

    Manacher算法是个解决Palindrome问题的O(n)算法,能够说是个超级算法了,秒杀其它一切Palindrome解决方式,包含复杂的后缀数组. 网上非常多解释,最好的解析文章当然是Leetc ...

随机推荐

  1. es6几个新增语法的使用----数组

    //数组的累加方法 let arr=[1,2,3]; let sum=arr.reduce((prev,cur)=>{ return prev+cur; }) console.log(sum)/ ...

  2. vue服务端渲染浏览器端缓存(keep-alive)

    在使用服务器端渲染时,除了服务端的接口缓存.页面缓存.组建缓存等,浏览器端也避免不了要使用缓存,减少页面的重绘. 这时候我们就会想到vue的keep-alive,接下来我们说一下keep-alive的 ...

  3. 使用deque保留有限的记录

    # 使用deque保留有限的记录 >>> from collections import deque >>> q = deque(maxlen=3) # 指定队列的 ...

  4. linux wdcp3 上传大文件 服务器i/o错误

    在一次上传大文件时 提示 服务器i/o错误  找了些方法都没有解决 最后发现 wdcp3 面板 默认安装时  web服务器引擎是 nginx + apache 共用 而且 nginx 默认并没与安装  ...

  5. 八、USB驱动分析

    学习目标:分析USB驱动源码结构. 一.Windows下USB驱动理论问题 1. 当usb设备接入PC时,右下角弹出"发现AAA",并弹出对话框,提示安装驱动程序.没有驱动程序,W ...

  6. python2.7练习小例子(二十六)

        26):题目:给一个不多于5位的正整数,要求:一.求它是几位数,二.逆序打印出各位数字.     程序分析:学会分解出每一位数.     程序源代码: #!/usr/bin/python # ...

  7. 一步一步学Linq to sql(二):DataContext与实体

    DataContext DataContext类型(数据上下文)是System.Data.Linq命名空间下的重要类型,用于把查询句法翻译成SQL语句,以及把数据从数据库返回给调用方和把实体的修改写入 ...

  8. 【目录】Spring 源码学习

    [目录]Spring 源码学习 jwfy 关注 2018.01.31 19:57* 字数 896 阅读 152评论 0喜欢 9 用来记录自己学习spring源码的一些心得和体会以及相关功能的实现原理, ...

  9. 「个人训练」Can you solve this equation?(HDU-2199)

    题意与分析 纯粹水题.本来想做下放松心情的,结果还是被坑了qaq 重点就是在浮点误差.比较左右的下次就直接上1e-10,别看着题目说1e-4然后给个-5,结果暴wa.气傻了..... 代码 #incl ...

  10. 【题解搬运】PAT_A1016 Phone Bills

    从我原来的博客上搬运.原先blog作废. 题目 A long-distance telephone company charges its customers by the following rul ...