[BZOJ3160]万径人踪灭(FFT+manacher)

题目描述传送门题目大意:在一个只含ab的字符串中选取一个子序列,使得:1、字符和下标都关于一个中心对称2、不能是连续的一段。求方案数。题解这题我的方法好蠢啊→_→ 首先容斥一下,答案=所有子序列的方案数-回文子串的数量 由于回文的连续子序列一定满足下标对称,所以可以直接用manacher求出回...

2017-04-24 14:37:35

阅读数 589

评论数 0

[BZOJ1414][ZJOI2009]对称的正方形(manacher+单调栈+二分)

题目描述传送门题解跟这道题gang了半晚上,写出来了一个理论复杂度O(n2log2n)O(n^2log^2n)的做法,然后各种剪枝各种砍常数,最后竟然A了… 网上题解貌似是二分+hash?好像也有用manacher+单调队列并且时间复杂度科学的方法,不过各种看不懂…首先我们参考manacher的...

2017-01-11 20:17:28

阅读数 948

评论数 0

[BZOJ3790]神奇项链(manacher+贪心)

题目描述传送门题解由于可以重叠,问题变为求出所有极长回文串了之后问最少用几个将序列全部覆盖。 这就是一个线段覆盖问题嘛。 从左向右一遍贪心。。。代码#include<algorithm> #include<iostream> #include<cstring>...

2016-12-19 23:37:37

阅读数 443

评论数 0

[BZOJ2160]拉拉队排练(manacher+快速幂)

题目描述传送门题解首先求出来所有的极长回文串的长度。 然后从大到小枚举长度,用快速幂计算同一个长度的答案,然后再这些回文串加到当前长度-2的里面去。 时间复杂度O(n)O(n)代码#include<iostream> #include<cstring> #include...

2016-12-19 23:34:57

阅读数 492

评论数 0

[BZOJ2342][Shoi2011]双倍回文(manacher)

题目描述传送门题解这道题非常有趣的是,要将一个字符串劈开两次都是回文串。 实际上manacher了之后对于每一个大中心暴力找小中心就可以了,因为只有26个字符暴力是无法卡掉的。不过如果时间复杂度科学的话貌似可以写平衡树或者可持久化线段树之类的东西。代码#include<iostream&g...

2016-12-19 23:31:41

阅读数 589

评论数 0

[BZOJ2565]最长双回文串(manacher)

题目描述传送门题解这道题实际上是求不重叠且相邻的两个串拼在一起的最长长度。 将字符中间都插入#了之后问题转化为对于每一个#求它左边和右边回文串能覆盖到它的最远的回文中心。 这个满足单调性,求出以每一个点为对称中心的最长回文串了之后扫两遍就可以了。代码#include<iostream&g...

2016-12-19 23:26:46

阅读数 431

评论数 0

Manacher 回文自动机 学习笔记

Manacher“马拉车”算法非常好写好调的回文串算法。 用途:在O(n)O(n)时间内,求出以每一个点为中心的回文串长度。首先,有一个非常巧妙的转化。由于回文串长度有可能为奇数也有可能为偶数,说明回文中心不一定在一个字符上。所以要将字符串做如下处理:在每两个字母之间插入一个特殊字符,通常用“#...

2016-12-19 23:14:20

阅读数 3451

评论数 0

[BZOJ2084][Poi2010]Antisymmetry(hash+二分||manacher)

题目描述传送门题解判断是否是反对称的一眼hash啊,关键是怎么求区间个数呢? 反对称也是对称啊!——由对称中心到两遍的长度满足单调性!即短的不是反对称的那么比这个长的一定不是反对称的。 那么我们可以枚举反对称的中心,然后二分反对称的长度。每一次判断的时候首先用hash预处理出来前缀和,然后每一...

2016-11-10 23:56:11

阅读数 592

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭