腾讯的比赛的题目的质量都很高 特别喜欢这题目背景 每题都很有意思

这题 也蛮难的 因为n太多了 一定要用O(n)的回文串算法来求

我是在这里学习的  传送

一般的话 都是char数组 使用特殊字符 表示插入 开头和末尾也是特别的字符 末尾的话是 '\0'

这边的话 因为是Int数组  要注意下 0 和 末尾不能取相同值 这样会错的 插入的值 一定要在这个Height范围外

 1 #include <iostream>
 2 #include <algorithm>
 3 using namespace std;
 4
 5 const int size = 100010;
 6 int height[size*2];
 7 int pos[size*2];
 8
 9 int main()
10 {
11     cin.sync_with_stdio(false);
12     int t , n , id , maxLen , ans;
13     cin >> t;
14     while( t-- )
15     {
16         cin >> n;
17         height[0] = -3;
18         for( int i = 1 ; i<=n ; i++ )
19         {
20             height[i*2-1] = -1;
21             cin >> height[i*2];
22         }
23         height[n*2+1] = -1;
24         height[n*2+2] = -2;
25         n = n * 2 + 2;
26         ans = maxLen = 0;
27         for( int i = 1 ; i<n ; i++ )
28         {
29             if( maxLen > i )
30             {
31                 pos[i] = min( pos[id*2-i] , maxLen-i );
32             }
33             else
34             {
35                 pos[i] = 1;
36             }
37             while( height[ i+pos[i] ] == height[ i-pos[i] ] )
38             {
39                 if( height[ i+pos[i] ] == height[ i-pos[i] ] == -1 )
40                 {
41                     ++ pos[i];
42                 }
43                 else if( height[ i+pos[i] ] <= height[ i+pos[i]-2 ] )
44                 {
45                     ++ pos[i];
46                 }
47                 else
48                     break;
49             }
50             if( i + pos[i] > maxLen )
51             {
52                 maxLen = i + pos[i];
53                 id = i;
54             }
55         }
56         for( int i = 0 ; i<n ; i++ )
57         {
58             ans = max( ans , pos[i]-1 );
59         }
60         cout << ans << endl;
61     }
62     return 0;
63 }

View Code

转载于:https://www.cnblogs.com/radical/p/4029683.html

hdu4513--Manacher算法--回文串的O(n)算法相关推荐

  1. 【回文串1 动态规划 马拉车算法】LeetCode 5. Longest Palindromic Substring

    LeetCode 5. Longest Palindromic Substring LeetCode中与回文串相关的免费的题目共有15道(5, 9, 125, 131, 132, 214, 234, ...

  2. 47 -算法 -回文串 -Leetcode 125 - 验证回文串

    // 模块化 自己在单独写一个函数都忘了 string 也有size a ASCII码为97 小a //为65 [NUM1 - 'A']%32 == [NUM2 - 'A']%32 忽略大小写#inc ...

  3. 通俗易懂的最长回文串图解、说明及Java代码(中心扩散法和Manacher算法)

    1. 回文串 作为程序员,回文串这个词已经见怪不怪了,就是一个字符串正着读和反着读是一样的,形式如abcdcba.bbaabb.这里涉及到奇回文和偶回文,奇回文指回文串的字符数是奇数,偶回文指回文串的 ...

  4. java 最长回文串_通俗易懂的最长回文串图解、说明及Java代码(中心扩散法和Manacher算法)...

    1. 回文串 作为程序员,回文串这个词已经见怪不怪了,就是一个字符串正着读和反着读是一样的,形式如abcdcba.bbaabb.这里涉及到奇回文和偶回文,奇回文指回文串的字符数是奇数,偶回文指回文串的 ...

  5. 最长回文 HDU - 3068(求最长回文串的长度【马拉车算法Manacher】)

    马拉车算法 Manacher's Algorithm 是用来查找一个字符串的最长回文子串的线性方法,由一个叫 Manacher 的人在 1975 年发明的,这个方法的最大贡献是在于将时间复杂度提升到了 ...

  6. 怎么判断一个字符串的最长回文子串是否在头尾_LeetCode 5 迅速判断回文串的Manacher算法...

    本文始发于个人公众号: TechFlow 题意 Given a string s, find the longest palindromic substring in s. You may assum ...

  7. 2015 UESTC Training for Search Algorithm String - M - Palindromic String【Manacher回文串】

    O(n)的复杂度求回文串:Manacher算法 定义一个回文值,字符串S是K重回文串,当且仅当S是回文串,且其长度为⌊N/2⌋的前缀和长度为⌊N/2⌋的后缀是K−1重回文串 现在给一个2*10^6长度 ...

  8. 【算法】双指针算法 ( 有效回文串 II )

    算法 系列博客 [算法]刷题范围建议 和 代码规范 [算法]复杂度理论 ( 时间复杂度 ) [字符串]最长回文子串 ( 蛮力算法 ) [字符串]最长回文子串 ( 中心线枚举算法 ) [字符串]最长回文 ...

  9. 【算法】双指针算法 ( 双指针算法分类 | 相向双指针 | 有效回文串 )

    文章目录 一.双指针算法分类 二.相向双指针示例 ( 有效回文串 ) 一.双指针算法分类 面试时经常遇到 限制算法复杂度为 O(n)O ( n )O(n) 的情况 , 就需要使用以下算法 : 双指针算 ...

最新文章

  1. linux中使用scp远程拷贝文件及文件夹
  2. SAP ABAP ALV list background render
  3. make: 警告:检测到时钟错误。您的创建可能是不完整的。
  4. jQuery对Ajax的封装应用(三)
  5. [计数排序]统计三个数和的[最大概率](洛谷P2911题题解,Java语言描述)
  6. 无人驾驶、自动驾驶与驾驶辅助的区别
  7. pythonsqlalchemy怎么看到返回的具体内容_sqlalchemy返回值总结
  8. python实现刷博器(适用于新浪、搜狐)
  9. TP5.0 Redis(单例模式)(原)
  10. 基于51单片机的智能温控风扇设计
  11. 系统缺少OBS Studio的运行时组件 解决方法
  12. wordpress 通过get_the_excerpt和the_excerpt函数获取文章摘要
  13. HJ 82 将真分数分解为埃及分数
  14. 推荐几个优质公众号,一个个都好优秀!(大实话)
  15. 博图软件中多重背景块的建立_过路老熊_新浪博客
  16. 一眼就能看懂的Android自学手册,深度好文
  17. 极路由 openwrt 使用 SyncY 实现百度云同步
  18. [转]linux shell 正则表达式(BREs,EREs,PREs)差异比较
  19. 二十四、红孩儿亲爹的考证
  20. 关键词热度查询导出工具-自动每天实时关键词更新导出工具

热门文章

  1. 解决spring整合mybatis时错误 ‘org.mybatis.spring.mapper.MapperScannerConfigurer#0‘
  2. python 换脸 github_人脸识别和换脸相关深度学习开源项目github汇总
  3. python规模_python语言计算生态规模有多大?
  4. mysqlcsv导入中文乱码_Mysql 导入导出csv 中文乱码问题的解决方法
  5. linux shell 等待输入_linux运维——基础篇
  6. Linux系统的操作命令
  7. java code combat_极客战记怎么换成java_「网易官方」极客战记(codecombat)攻略-沙漠-脆弱的士气......
  8. js怎么在一个div中嵌入另一网站_好程序员web前端学习路线分享HTML5常见面试题集锦一...
  9. 程序员算事业单位吗_清北毕业出来的程序员不如三本公务员?网友:你开心就好...
  10. HDLBits答案(3)_Verilog模块的例化与调用