hdu 5340 Three Palindromes】的更多相关文章

http://acm.hdu.edu.cn/showproblem.php?pid=5340 题意 判断是否能将字符串S分成三段非空回文串 分析 manacher预处理出前缀和后缀回文的位置, 枚举第一个回文串和第三个回文串,这样得到第二个回文串的区间,找中点,因为manacher处理后所有的回文串长度都是奇数,然后根据中点的回文半径判断中间部分是否回文即可, 复杂度o(n2).至于n2复杂度为什么能水过去..不是很懂 #include<iostream> #include<cmath&…
Three Palindromes Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1244    Accepted Submission(s): 415 Problem Description Can we divided a given string S into three nonempty palindromes?   Input…
前几晚 BC 的第二题,官方给出的题解是: 然后我结合昨天刚看的 Manacher 算法试着写了下,发现 pre.suf 数组挺难构造的,调试了好久,然后就对中间进行枚举了,复杂度应该是 O(n2) 吧,我第一次交时超时了,以为真的要用什么暴力压位,可是我还不会啊,然后作了一些少许的优化提交本想再 T 一次的,没想到竟然神奇的过了,900+ms 水过,原来还是能卡过的……于是我把更多的细节进行优化,把 *2 和 /2 操作都改为移位运算,再提交时就下降到了 700+ms  :-D 代码如下: #…
题意: 判断是否能将字符串S分成三段非空回文串. 思路: 先预处理出前缀回文串和后缀回文串的位置,将位置分别装入两个集合中,O(n). 针对每个前缀回文串的终点位置,挑出不相交的后缀回文串,对中间那段进行暴力匹配即可.只有20个case,不会超时的. 具体的算法参考HIHOCODER HIHO一下 第一周 #1032 : 最长回文子串 (特殊处理) //#include <bits/stdc++.h> #include <cstdio> #include <cstring&g…
Sample Input 2 abc abaadada   Sample Output Yes No 判断是否能成为3个非空回文子串 manacher算法求出个点回文长度,在找出第一个和最后一个保存下来,再判断中间的 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> using namespace std; type…
下面继续给出HDU 2014~2032的AC程序,供大家参考.2014~2032这19道题就被归结为“C语言程序设计练习(三) ”~“C语言程序设计练习(五) ”. HDU 2014:青年歌手大奖赛_评委会打分 用max保存最高分,min保存最低分,sum表示总分,则最后平均分为(sum-max-min)/(n-2). #include <stdio.h> int main() { int n,i,score,min,max,sum; while (scanf("%d",&…
由一个题引入: 求一个串A的最长回文串: A=abababa最长回文串长度:5(ababa) 先思考用hash怎么做? 一.暴力 枚举左端,右端点(确定一个区间),线性扫一遍当前区间. Ans=max(ans); 时间复杂度:O(n^3) 貌似也有O(n^2)的暴力,在此不再赘述.二.哈希 分设两个hash数组, ha1记录前缀, ha2记录后缀. 对于任意[l,r] 若ha1[l,mid]==ha2[mid+1,r],则为回文串 Ans=max(ans); 时间复杂度:O(nlog 2 n)三…
昨晚的bc做得好忧郁----- 第一题改了好久好久好久----等改完发现比赛已经结束了(发现是枚举子集的位运算那儿写错了--) 第二题是判断能否将一个字符串划分成三段回文串 今天学了一点点  Manacher http://wenku.baidu.com/view/3031d2d3360cba1aa811da42.html 模板大概是这样的-- void Manacher(){ ;i <= len;i++){ t[*i-] = '#'; t[*i] = s[i]; } t[] = +] = '#…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1318 题意分析:输入每行包含一个字符串,判断此串是否为回文串或镜像串. 表面上看这道题有些复杂,如果能熟练运用字符数组的话,代码也颇为简洁.. /*Palindromes Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 657 Accepted…
http://acm.hdu.edu.cn/showproblem.php?pid=2163 Problem Description Write a program to determine whether a word is a palindrome. A palindrome is a sequence of characters that is identical to the string when the characters are placed in reverse order.…