前几天bestcode做到一道字符串的题目,需要O(n)的回文,正好看到网上的manacher算法,于是来学习一发
进入正题:
manacher算法
用法:一般用于求一个字符串的最大回文,操作过程中会记录以每个点为中心的回文半径,可用来进行其他操作
时间复杂度:O(n)
空间复杂度:记录字符串2*n,半径数组2*n
内容:
记p[i]为以i为中心的回文半径(a...
分类:
编程语言 时间:
2015-08-04 17:16:17
阅读次数:
194
Shaking hands问题描述今天是Gorwin的生日,所以她举办了一个派对并邀请她的朋友来参加。她将邀请n个朋友,为了方便,Gorwin把他们从1到n标号。他们之中有一些人已经相互认识,有一些人不认识对方。相互认识的朋友见面之后会握手然后喝一杯香槟。Gorwin想要知道要准备多少杯香槟。你能帮...
分类:
其他好文 时间:
2015-05-24 00:01:22
阅读次数:
370
问题描述:已知一个矩形的面积,求最小周长示例:12(1*12、3*4),最小周长为(3+4)*2=14解题分析:#include#include#include#includeusing namespace std;int main(){ int n,T; cin>>T; whil...
分类:
其他好文 时间:
2015-05-19 00:41:08
阅读次数:
126
题目链接:HDU 5172 GTY's gay friends
题意:给出一串序列,询问[l,r]区间里是否存在1~l-r+1的一个排列。
思路:1~l-r+1的一个排列 等价于 [l,r]中元素互不相同且[l,r]区间和等于(1+len)*len/2(len=l-r+1)。
区间和可以用前缀和来处理。
元素互不相同,记录位置i上a[i]上次出现的位置记做pre[i],再用线段树来维护区间...
分类:
其他好文 时间:
2015-02-10 16:50:48
阅读次数:
186
题目链接:HDU 5171 GTY's birthday gift
题意:每次将序列中两个数相加再加入序列中,反复操作k次,问k次操作后的序列和最大是多少。
思路:序列和最大,显然是每次取序列中最大的两个数相加。
3 2
6 3 2
第一步:6 + 3 = 9
1 * 6 + 1 * 3 = 9
第二步:6 + 3 + 6 = 15
2 * 6 + 1 * 3 = 15
第三步...
分类:
其他好文 时间:
2015-02-08 09:08:51
阅读次数:
274
题目链接:HDU 5058
So easy
题意:给出两个序列,问这个两个序列构成的集合是否相同、
set大法好!
AC代码:
#include
#include
#include
using namespace std;
#define ll __int64
set ss1,ss2;
set::iterator it;
int main()
{
ll n...
分类:
其他好文 时间:
2014-10-09 15:56:38
阅读次数:
282
Boring count
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 360 Accepted Submission(s): 140
Problem Description
You are given a...
分类:
其他好文 时间:
2014-09-29 21:18:06
阅读次数:
233
题目链接:HDU 4990 Reading comprehension
题目给的一个程序其实就是一个公式:当N=1时 f[n]=1,当n>1时,n为奇数f[n]=2*f[n-1]+1,n为偶数f[n]=2*f[n-1]。
先不取模,计算前十个找规律。得到一个递推公式:f[n]=2*f[n-2]+f[n-1]+1
然后快速幂解决之。
给出一个神奇的网站(找数列通项):http://oeis....
分类:
其他好文 时间:
2014-09-08 09:39:46
阅读次数:
283