zstu-3769 数回文子串
思路:用manacher求出每个位置的半径,相加即可。
代码:【rad[i]/2】即i这个位置的回文半径,添加的'#'代表长度为偶数的串。
- #include<stdio.h>
- #include<string.h>
- #include<iostream>
- using namespace std;
- const int N=1e5+;
- char s[N],cpy[N<<];
- int rad[N<<];
- void manacher(char *s,int len,int rad[])
- {
- for(int i=,j=,k;i<len;i+=k)
- {
- while(s[i-j-]==s[i+j+]) j++;
- rad[i]=j;
- for(k=;k<=rad[i]&&rad[i-k]!=rad[i]-k;k++)
- rad[i+k]=min(rad[i]-k,rad[i-k]);
- j=max(j-k,);
- }
- }
- void work(char *s,int rad[])
- {
- int len=strlen(s);
- cpy[]='(',cpy[]='#';
- for(int i=,j=;i<len;i++,j+=)
- {
- cpy[j]=s[i];
- cpy[j+]='#';
- }
- cpy[(len=len*+)-]=')';
- manacher(cpy,len,rad);
- int ans=;
- for(int i=;i<len;i++)
- ans+=rad[i]/;
- printf("%d\n",ans);
- }
- int main()
- {
- while(scanf("%s",s)!=EOF)
- {
- work(s,rad);
- }
- return ;
- }
zstu-3769 数回文子串的更多相关文章
- 求最长回文子串:Manacher算法
主要学习自:http://articles.leetcode.com/2011/11/longest-palindromic-substring-part-ii.html 问题描述:回文字符串就是左右 ...
- 最长回文子串(Manacher算法)
回文字符串,想必大家不会不熟悉吧? 回文串会求的吧?暴力一遍O(n^2)很简单,但当字符长度很长时便会TLE,简单,hash+二分搞定,其复杂度约为O(nlogn), 而Manacher算法能够在线性 ...
- leetcode 5 :Longest Palindromic Substring 找出最长回文子串
题目: Given a string S, find the longest palindromic substring in S. You may assume that the maximum l ...
- leetcode刷题五<最长回文子串>
下面是题目的描述 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 . 示例 : 输入: "babad" 输出: "bab" 注意: ...
- DP h回文子串 LCS
题目背景 IOI2000第一题 题目描述 回文词是一种对称的字符串.任意给定一个字符串,通过插入若干字符,都可以变成回文词.此题的任务是,求出将给定字符串变成回文词所需要插入的最少字符数. 比如 “A ...
- Ural 1297 Palindrome(后缀数组+最长回文子串)
https://vjudge.net/problem/URAL-1297 题意: 求最长回文子串. 思路: 先将整个字符串反过来写在原字符串后面,中间需要用特殊字符隔开,那么只需要某两个后缀的最长公共 ...
- zoj 2744 Palindromes(计算回文子串个数的优化策略)
题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2744 题目描述: A regular palindrome i ...
- 最长回文子串 C++实现 java实现 leetcode系列(五)
给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: &qu ...
- [LeetCode] 5. Longest Palindromic Substring 最长回文子串
Given a string s, find the longest palindromic substring in s. You may assume that the maximum lengt ...
随机推荐
- (旧)子数涵数·C语言——让C帮你做计算
之前,我们学过了我们的第一个C程序--hello World.现在开始进一步学习,想一想如何让C帮你做计算. 我们先来看代码(我没有新建,还是用之前的hello world.cpp): 好,因为之前在 ...
- API的非向后兼容性无论如何通常代表着一种比较差的设计
不管一个类库或者工具方法实现多么的好,如果无法做到向后兼容性,通常会给用户带来很大的升级成本,很多对此的依赖如果希望在后续的升级和维护期间使用该类库的其他新增特性或者好处,将不得不推迟升级亦或是被迫接 ...
- location对象及history对象
history对象 location 是最有用的BOM对象之一,它提供了与当前窗口中加载的文档有关的信息,还提供了一些导航功能.事实上,location 对象是很特别的一个对象,因为它既是windo ...
- 关于一个软件ipa包的其他图片资源
有时候 当你打开一个ipa包内容的时候 可能会找不到全部的资源 所以你需要在github上下载一个插件 下载下来以后 运行一下 然后会出来这个 把ipa 文件 拖到里面 ...
- IOS-UITextField-全解
IOS-UITextField-全解 //初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame: ...
- Java眼中的XML--文件读取--1 应用DOM方式解析XML
初次邂逅XML: 需要解析的XML文件: 这里有两个book子节点. 1.如何进行XML文件解析前的准备工作,另外解析先获取book节点. 这个我后来看懂了: 这个Node的ELEMENT_NODE= ...
- [VMware]设置VM虚拟机随系统自动启动
设置步骤: 1.找到VM的安装路径,右键vmware发送到桌面快捷方式 2.右键桌面快捷方式的属性,看到目标的属性框 3.找到需要自启动的虚拟机路径,如: D:\QC_VM\Clone of Wind ...
- 返回顶部 和ico标题图片的制作
<link rel="shortcut icon" href="bitbug_favicon.ico">---比特虫ico网页快速制作<tit ...
- ajax跨域 自定义header问题总结
遇到的问题:已经在ajax里面添加自定义参数,但是没有生效 beforeSend : function(request) { request.setRequestHeader("region ...
- cocos2d-x图层以及显示对象的基本使用
LogoNode: #ifndef LogoNode_hpp #define LogoNode_hpp #include <stdio.h> #include "cocos2d. ...