上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 53 下一页
摘要: KD-tree **了这道题 这个估价函数好鬼畜,把min打成max。。。 关于min的估价函数非常鬼畜,具体我也不知道为什么。 #include<bits/stdc++.h> using namespace std; const int N = 5e5 + 5; int n, d, root, a 阅读全文
posted @ 2017-11-21 20:23 19992147 阅读(150) 评论(0) 推荐(0) 编辑
摘要: KD-tree 强制在线就不能愉快的做这道题了。 我们用KD-tree维护平面上的点,这样建出来的树高大概是log,复杂度过得去,但是插入过多会使树深很深,这样就能卡死,那么我们每个10000次插入就重构一次。 #include<bits/stdc++.h> using namespace std; 阅读全文
posted @ 2017-11-21 20:21 19992147 阅读(142) 评论(0) 推荐(0) 编辑
摘要: KD-tree+堆 多年大坑 KD-tree已经是半年前学的了,忘记了。这道题当时一直T,今天重新抄了一遍,A了 KD-tree过程:1.建树:每次依次按x,y划分平面,像二叉搜索树一样建树,每个点维护一些东西; 2.查询:直接查太暴力了,我们用估价函数减值,每个点维护最小最大的x和y,每次计算能够 阅读全文
posted @ 2017-11-20 22:38 19992147 阅读(112) 评论(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 阅读(133) 评论(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 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 树状数组+KMP 匹配问题上KMP 但是问题在于如何判断两个位置相等,我们认为如果一个位置之前比他小的数数量相同那么就是相等。 那么我们用树状数组动态维护这个东西,每次跳nxt的时候用树状数组删除数。因为每个数只加入一次,所以复杂度是nlogn的,为什么这样是对的呢?我们这么想,对于当前加入最后的一 阅读全文
posted @ 2017-11-20 20:24 19992147 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 后缀自动机+LCT 终于做了这道题 思路比较明显,每次的答案就是走到的最终节点的Right集合大小,如果走不到就是0。但是问题在于每次添加字符后parent树的形态变了,那么Right集合也要变化,这个我们用LCT维护,由于是有根树,比较好维护。 #include<bits/stdc++.h> us 阅读全文
posted @ 2017-11-19 19:30 19992147 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 广义后缀自动机 具体我也不是很清楚 像这样有很多个串要统计方案的题我们建一个广义后缀自动机,就是每次对一个串建完后把last设为root,然后就是每个串在自动机上跑一遍,记录每个节点的访问次数,为了避免重复,我们记录当前这个节点这个字符串走没走过,出现次数也是要向上推的。最后按照套路把贡献向上推,再 阅读全文
posted @ 2017-11-19 19:27 19992147 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 后缀自动机+dp 一个串在另一个串上跑。 先对A建出自动机,然后用B在上面跑,记录当前匹配的最大长度,每次经过一个节点记录经过次数,并加上(len-Max(par))*Right,是这个状态对答案的贡献,然后把每个节点的出现次数向par树上的祖先推一遍计算贡献。 #include<bits/stdc 阅读全文
posted @ 2017-11-19 19:22 19992147 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 后缀自动机+二分+倍增+线段树合并 后缀自动机真好用 后面一个串是固定的,那么我们要对前面的串进行一些操作。我们想既然是求lcp,那么我们得先翻转原串,这样前缀变成了后缀,然后二分一下,从d在自动机上的位置向上倍增,走到第一个Max大于当前答案的位置,用线段树合并判断一下当前是否满足。还是很好写的, 阅读全文
posted @ 2017-11-19 19:18 19992147 阅读(167) 评论(0) 推荐(0) 编辑
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 53 下一页