摘要: KD-tree+堆 多年大坑 KD-tree已经是半年前学的了,忘记了。这道题当时一直T,今天重新抄了一遍,A了 KD-tree过程:1.建树:每次依次按x,y划分平面,像二叉搜索树一样建树,每个点维护一些东西; 2.查询:直接查太暴力了,我们用估价函数减值,每个点维护最小最大的x和y,每次计算能够 阅读全文
posted @ 2017-11-20 22:38 19992147 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 广义后缀自动机+二分+单调队列+dp 这道题其实就是一个简单dp,dp[i]表示匹配到i最长匹配多少,设val[i]表示当前位置和原串的最长公共长度,二分的长度是L,那么要求dp[i]=max(dp[i-1],dp[j]+i-j)要求L<=i-j<=val[i],那么也就是j>=i-val[i],前 阅读全文
posted @ 2017-11-20 20:43 19992147 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 平衡树 6个操作做完当然GG了,其实只有两个操作,翻转[A+1,A+B],把这个区间放到C的后面,那么就是基本splay操作了,可是好久没打,又GG了,splay函数写错了。。。 #include<bits/stdc++.h> using namespace std; const int N = 1 阅读全文
posted @ 2017-11-20 20:27 19992147 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 树状数组+KMP 匹配问题上KMP 但是问题在于如何判断两个位置相等,我们认为如果一个位置之前比他小的数数量相同那么就是相等。 那么我们用树状数组动态维护这个东西,每次跳nxt的时候用树状数组删除数。因为每个数只加入一次,所以复杂度是nlogn的,为什么这样是对的呢?我们这么想,对于当前加入最后的一 阅读全文
posted @ 2017-11-20 20:24 19992147 阅读(244) 评论(0) 推荐(0) 编辑