随笔分类 -  st表

摘要:考虑二分答案 对于一个区间一定是一边最大一边最小是最优的,还有不够补足L的情况,这个RMQ就好 枚举右端点是最大/最小,单调队列搞搞就完了 阅读全文
posted @ 2019-03-26 21:28 AKCqhzdy 阅读(176) 评论(0) 推荐(0) 编辑
摘要:头都烂了怎么头疼啊 考虑先做出对于一个位置以它作为唯一最小值的最远区间,这个可以单调栈上二分搞出来 那么对于一个位置这个区间而言,一定是选择这个区间的最大数是作为最终的唯一最大数最优的 为什么呢?我们可以把区间起止和区间之中的最大数下标弄出来,那么当前位置一定位于某两个弄出来的编号之间,其他数的答案 阅读全文
posted @ 2019-02-22 14:59 AKCqhzdy 阅读(188) 评论(0) 推荐(0) 编辑
摘要:总的来讲,SAM难想,SA难写,SAM跑得快 SAM: 这题其实巨像bzoj2780 建了广义SAM以后,用dfs序+树状数组求出每个点在多少不同的串里面 然后枚举每个串在上面跑就行了。 SA: 然后如果要上后缀数组的话,把它们接在一起弄,中间插不同的乱七八糟的符号,先套路一手st表求LCP 对于每 阅读全文
posted @ 2018-12-23 18:57 AKCqhzdy 阅读(258) 评论(0) 推荐(0) 编辑
摘要:虽然有准备但是调得就像失了智一样 首先我们先跑一次后缀数组 对于答案二分,找出C的Rank,左右延伸,看最远可以满足的L、R,这个可以通过st表实现 那么对于A~B的字串,它所要满足的,就是A<=i<=B,L<=Rank[i]<=R 那么就按照Rank建主席树,把i插入,查找就找区间L~R内有没有A 阅读全文
posted @ 2018-04-25 11:57 AKCqhzdy 阅读(185) 评论(0) 推荐(0) 编辑
摘要:大清早的就被肉老师D飞。。。 那么这题hj≤hi+p-sqrt(|i-j|)就是这个式子了。 移一下项-> hj+sqrt(|i-j|)-hi≤p 一看就觉得根号很恶心,突破口就在这,考虑到我们要的p是整数,这个sqrt(|i-j|)向上取整一下,可以发现其实有一大段一大段区间的sqrt值是相等的( 阅读全文
posted @ 2018-04-11 07:55 AKCqhzdy 阅读(155) 评论(0) 推荐(0) 编辑
摘要:今天早上本来就想填掉这个坑的。。。 然后还是血淋淋的一片。 心态崩了就去做跳蚤 调着调着跳蚤才发现我st表模版写挂了。。。 满怀希望的去把这题改了。 然后还是血淋淋的一片。 今天晚上一怒之下把以前的代码翻出来改st表 wc,A了?A了!。。 cnm 这题常规操作st表求LCP 然后单调栈维护区间 阅读全文
posted @ 2018-04-02 19:24 AKCqhzdy 阅读(148) 评论(0) 推荐(0) 编辑
摘要:一入字符深似海,从此AC是路人。 ——题记 为什么恶心呢。 在神犇的blog,我们才能知道,本质不同的子串=∑(Len−sa[i]−height[i]) 一脸蒙蔽的NN真是可爱啊。然而,这个sa是0~n-1的。 神犇说:我们可以二分排名为mid的串,找到排名为mid的串的魔法就是这个(hhhhhh 阅读全文
posted @ 2018-04-02 11:58 AKCqhzdy 阅读(119) 评论(0) 推荐(0) 编辑
摘要:也是一道好题呀。 首先先把它转换成前缀和应该都想到了。 然后用st表把s的最小值的id存下来,那么想一想,对于当前的位置rid,s[rid]-s[lid](其中rid-R+1<=lid<=rid-L+1)就是一个和弦的方案,用优先队列维护s[rid]-s[lid]最大值,跑k次。 但是当当前这个li 阅读全文
posted @ 2018-03-28 13:56 AKCqhzdy 阅读(134) 评论(0) 推荐(0) 编辑