蓝书紫书上都有的一道题。。。这里就懒得说题解了。 但是我竟然WA了6次!为什么呢??? 一开始没看见连续子序列。。。。。 后来插入的时候忘判断了是不是比前驱大。。。。 所以我们只需要维护一个权值递增(这个set已经帮你维护好了)并且长度递增(这个需要插入的时候判断)的set就好了、。 ...
分类:
其他好文 时间:
2018-02-22 21:41:33
阅读次数:
148
题解:按照点的Dfs序走 用Splay维护Dfs序即可 插入时找前驱和后继,插在中间 ...
分类:
其他好文 时间:
2018-02-20 18:44:35
阅读次数:
143
原理: 1.从DAG图中选一个 没有前驱(即入度为0)的顶点并输出2.从图中删除该顶点和所有以它为起点的有向边3.重复1和2直到当前的DAG为空或当前图中不存在无前驱的顶点为止,后一种情况说明有向图中一定有环。 拓扑排序判环: ...
分类:
编程语言 时间:
2018-02-20 16:21:59
阅读次数:
187
数据结构维护二维平面 首先横着切与竖着切是完全没有关联的, 简单贪心,最大子矩阵的面积一定是最大长 最大宽 此处有三种做法 1.用set来维护,每次插入操作寻找这个点的前驱和后继,并维护一个计数数组,来维护最大值 cpp include include include include include ...
分类:
其他好文 时间:
2018-02-19 10:23:57
阅读次数:
177
洛谷传送门 主要思路大概也是差不多的,对于两种询问分别用线段树与平衡树来维护。 1.MIN_SORT_GAP:显然平衡树简单操作,来一发前驱、后继即可。 2.MIN_GAP:这一个我用的是线段树:可以注意到插入元素的操作,如果是在一个元素之后反复插入,这些元素之间更新出来的最小值是不会发生改变的。只 ...
分类:
其他好文 时间:
2018-02-17 16:39:25
阅读次数:
218
"题目链接" "主要思路" cpp / 其实只需要multiset即可 对于询问1,删除、插入差值,输出最小元素 对于询问2,插入后用前驱后继更新 1.注意哨兵元素 2.注意multiset中删除时是删除某元素的一个位置,而不是这个元素!这个值会全部都删掉 不开O2慢成狗 开了也不是很快 / inc ...
分类:
其他好文 时间:
2018-02-09 20:45:38
阅读次数:
136
dfs由于是利用递归进行遍历,所以每种情况在时空上不会出现冲突,所以可以利用数组将每种情况的各个元素的值进行存储(即存储当前位) 而bfs由于并不是利用递归,不能将每种情况的值进行不冲突地存储,但由于其在遍历过程会把走过的地方进行标记,所以每个位置的前驱唯一,所以在存储时可以通过存储每一位的前一位达 ...
分类:
其他好文 时间:
2018-02-08 17:44:58
阅读次数:
164
参考:http://blog.csdn.net/w_yqts/article/details/76037315 把相同符号的连续数字加起来,合并后ans先贪心的加上所有正数,如果正数个数sum m,设计二元组(i,a[i])表示合并后序列i位置上值为a,记录前驱后继,塞进按绝对值排序的小根堆里。每次 ...
分类:
其他好文 时间:
2018-02-08 10:16:54
阅读次数:
166
【传送门:BZOJ3224】 简要题意: 有一个数列,有6种操作: 1. 插入x数 2. 删除x数(若有多个相同的数,因只删除一个) 3. 查询x数的排名(若有多个相同的数,因输出最小的排名) 4. 查询排名为x的数 5. 求x的前驱(前驱定义为小于x,且最大的数) 6. 求x的后继(后继定义为大于 ...
分类:
其他好文 时间:
2018-02-08 10:14:05
阅读次数:
149
(1)Dijkstra算法 1.算法时间复杂度:O(N²) 2.算法特点: 该算法是用来计算从一个点到其他所有点的最短路径算法,也是一种单源最短路径算法。该算法不能处理存在负边权的情况。 3.算法描述 起点:s dis[v]:s到v的最短路径 pre[v]:v的前驱节点 初始化:dis[v]=∞(v ...
分类:
其他好文 时间:
2018-02-07 00:42:24
阅读次数:
173