数据结构
GoLakerswxy
这个作者很懒,什么都没留下…
展开
-
左倾堆 leftist heap
左倾堆(左偏树)和之前记录过的二叉堆一样,是堆的一种;和普通的二叉堆不同,它是一种可合并堆。可合并堆相比于普通的二叉堆在对两个堆进行合并的操作上具有很大的优势:对于基本的二叉堆合并,时间复杂度为O(n), 而对于可合并堆,其时间复杂度为O(log2n)....原创 2021-05-28 20:14:56 · 343 阅读 · 0 评论 -
bzoj1269 [AHOI2006]文本编辑器editor(伸展树??rope)
这些日子,可可不和卡卡一起玩了,原来可可正废寝忘食的想做一个简单而高效的文本编辑器。你能帮助他吗?为了明确任务目标,可可对“文本编辑器”做了一个抽象的定义: 文本:由0个或多个字符构成的序列。这些字符的ASCII码在闭区间[32, 126]内,也就是说,这些字符均为可见字符或空格。光标:在一段文本中用于指示位置的标记,可以位于文本的第一个字符之前,文本的最后一个字符之后或文本的某两个相邻字符之...原创 2018-07-26 21:00:15 · 295 阅读 · 0 评论 -
牛客网多校2 farm(巧妙的随机数hash,前缀和/二维树状数组)
题目:给出一个N*M的矩阵药田,药田中每个格子都种有一种编号的为1~N*M的药,随后一个T表示有T次浇水操作,之后先是给出N行M列的矩阵(药田),再给出T行,每行有5个数,X1,Y1,X2,Y2和W,表示这次操作会在左上角为(X1,Y1),右下角为(X2,Y2)的矩阵中浇W这种药水,若是该某个药格中的药编号与被浇到的药水不同,则死亡,问你T次浇水操作后整个药田死了多少颗药?思路:这里对每个药的...原创 2018-07-22 15:09:53 · 400 阅读 · 0 评论 -
HDU-6356 Glad You Came (rmq)
题目:刚开始一个长度为n(n<=1e5)的全为0的数组a,生成q(q<=5e6)组更新(l,r,v)把 l 到 r 区间内小于v的数都更新成v,最后输出n个数字的抑或值。思路:时间卡的好紧,比赛时,优先队列维护T,线段树也T,时间复杂度O(qlogn),但是q太大了数据组数又比较多。赛后看官方题解分析的是rmq,O(nlogn),更新时逆向更新就好。#include <...原创 2018-08-06 20:25:33 · 214 阅读 · 0 评论 -
HDU - 5869 Different GCD Subarray Query(树状数组或线段树+rmq)
题目:给你一组数, 然后是m个查询. 问[l,r]中所有连续区间共有多少不同的GCD思路:每个数往两边扩找不同的gcd,最多能找log个,gcd就会变成1。一开始想的是rmq处理出以每个数为起点往左往右扩展开的首次出现与上一次不同的gcd位置,然后离线用莫队来搞,时间复杂度很高,当时没有想到别的思路,然后敲完后一直re.....事实上这个题应该是线段树或者树状数组,很套路的一个做法。把查询...原创 2018-08-31 18:12:45 · 298 阅读 · 0 评论