3974专题

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO

HDU 3974 线段树(将树映射到区间)

第一次写将树映射到区间的线段树。。。 线段树部分很简单 主要是将原有的关系树根据BOSS关系从新编号 以便把每个BOSS所带领的员工全部压入一个连续区间内 然后记录每个BOSS的起始编号和他的最后一名的员工的编号 然后用线段树成端更新,单点查找即可 #include "stdio.h"#include "string.h"struct node{int l,r,val,l

HDU 3974 Assign the task 线段树(树映射到区间)

题意.... 题解: #include<cstdio>#include<cmath>#include<cstring>#include<algorithm>using namespace std;#define MAXN 100001#define L(u) (u<<1)#define R(u) (u<<1|1)struct A_NODE{A_NODE *sun, *bro;

Palindrome (POJ - 3974 ,字符串 Hash + 二分 || Manacher)

一.题目链接 POJ-3974 二.题目大意: 求 s 的最大回文子串长度. 三.分析: 此题可以用 字符串 Hash + 二分 或者是 Manacher 算法.(后者明显比前者块) 由于这是 Manacher 的模板题,所以这里只讲第一种方法. O(N)扫描字符串 s,建立前缀与后缀 Hash 数组. 之后枚举回文串的中心位置,二分答案即可. ps:要分别处理奇偶长度的回文串.

HDU 3974 Assign the task (DFS + 线段树)

加2017新生赛(点击红色的Registerring) Assign the task Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3816    Accepted Submission(s): 1581