首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
hdu6230
】的更多相关文章
hdu6230
hdu6230 题意 给出一个字符串,问有多少个子串 \(S[1..3n-2](n \geq 2)\) 满足 \(S[i]=S[2n-i]=S[2n+i-2] (1\leq i \leq n)\) . 分析 Manacher 算法预处理下以每个下标为中心的最长回文串的长度. 我们要找的子串由两个奇数长度的回文串重叠部分组成,用一个向量数组存下以每个下标作为左端的奇数长度回文串的中心位置,我们可以维护一个树状数组去计算答案. code #include<bits/stdc++.h> using…
hdu6230 Palindrome(manacher+树状数组)
题目链接: Palindrome Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 113 Accepted Submission(s): 44 Problem Description Alice like strings, especially long strings. For each string, she has a s…
Hdu-6230 2017CCPC-哈尔滨站 A.Palindrome Manacher 主席树
题面 题意:给你一个字符串,问你满足s[i]=s[2n-i]=s[2n+i-2]的子串(这子串长度为3n-2)有多少个,原字符串长度<=5e5 题解:对于这种子串,其实要满足2个回文,跑过一次Manacher后,len[i]表示以i向两边扩展最远的回文串长度, 那么对于答案,实际就是统计满足下列条件(i,j)的对数 i <= j j - i <= len[i] j - i <= len[j] 移项就是 i >= j - len[j] j <= i + len[i]…