1297. Palindrome 题目大意 求一个字符串中的最长回文子串 题解 可用后缀数组在mlogn + nlogn时间内解决 回文串的主要思想之一是枚举对称中心,为了同意处理奇偶长度的回文串,用$将每个字符分隔开(不要忘记首尾也要加,因此WA了很多发) 而后,把这个回文串反转后接在原串后面。枚 ...
分类:
其他好文 时间:
2019-07-31 18:29:00
阅读次数:
74
https://www.51nod.com/Challenge/Problem.html problemId=1586 一眼看过去居然一点思路都没有的,一言不合就打表,打贡献表。 cpp include using namespace std; typedef long long ll; int n ...
分类:
其他好文 时间:
2019-07-31 09:13:05
阅读次数:
96
我们一开始要建一棵空线段树,然后一个一个的添加线段树。加入线段树后会是这样: 再加入[1, 至此,裸树就建好了,并且只用了O(nlogn)的空间。 查询的时候存两个点,一开始为两个区间的根结点,两结点的差比大小,两个点要同时往左/右跳。 ...
分类:
其他好文 时间:
2019-07-30 18:42:18
阅读次数:
63
这是本蒟蒻第一次写题解,好激动。 我下面介绍**四**种解法 _~~有两种比较神奇~~_ # 方法一 先发一下正解吧,具体解释其他题解都有,我就不详细说了。重点是下面三种方法。```cpp#include <iostream>using namespace std;typedef long long ...
分类:
其他好文 时间:
2019-07-29 21:33:04
阅读次数:
128
线段树真是一个很重要很重要的数据结构!!! 一、概念 线段树是一棵二叉树,每个节点维护序列的一段区间 二、复杂度 o(nlogn) 开数组一般要开四倍空间 三、相关量 儿子:除了叶子节点,每个节点都有左儿子和右儿子 左儿子:左儿子的节点编号是父节点的两倍2 * ro,对应父节点左一半区间【l,mid ...
分类:
其他好文 时间:
2019-07-29 16:22:39
阅读次数:
145
$subtask3$ 当$t[son]<=t[ansetor]$时$son$的贡献才能被计算,即求最长上升子序列$o(nlogn)$ ...
分类:
其他好文 时间:
2019-07-29 10:24:03
阅读次数:
142
引入 首先请求出: ? 长度为n的序列 ? m次询问全局第k小 做法: ? 画一棵(权值)线段树手动模拟,请记住此过程 之后,请思考; ? 长度为n的序列 ? m次询问区间[l, r]中第k小值 ? 值域 ±1e9 ? n≤2e5 , m≤2e5 做法: 可持久化线段树 原理 用 [1, r]建得的 ...
分类:
其他好文 时间:
2019-07-27 09:54:38
阅读次数:
101
$10^18$是要long long的。 $nlogn$单调队列上维护$logn$线段树。 ...
分类:
其他好文 时间:
2019-07-27 09:42:17
阅读次数:
92
经典line sweep问题,和 perfect rectangle 很类似,但是要考虑多个矩形左边界一样的情况,加个id来区分。 和另一道类似的题 the skyline problem 不同的是,没有很多 corner cases,对 x 排序非常简单。 难点是在 active set 里,和 ...
分类:
其他好文 时间:
2019-07-26 14:40:02
阅读次数:
78
区间DP,题目十分类似2048的游戏,不过从二维的平面换成了数列数据范围中 $N <= 2*10^5$看来$O(N^2)$肯定是无法通过了,那么设计状态N只能添加到一维上应该是类似于$O(NlogN)$的算法再观察题目,可以提取三个关键变量,对于某个能合并成一个数的数列中的区间,有它的左边界,右边界 ...
分类:
其他好文 时间:
2019-07-25 20:35:21
阅读次数:
74