![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
y_din
Being dazzling.You are qualified.
展开
-
【线段树+双向链表】2021牛客寒假算法基础集训营3 E-买礼物
题面 https://ac.nowcoder.com/acm/contest/9983/E 题意 两种操作 把位置x上的数变成0 查询【l,r】区间上有没有相同的两个数 思路 题意转化:可以把问题转化成对于【l,r】这个区间中是否存在一个数,使得跟该数前面最近跟它相同的数位置在【l,r】这个区间中 首先我们可以预处理出每个数前面跟它相等的最近的数的位置,然后用线段树存储我们预处理的数组,我们只需要判断跟他相同的最大的位置是否在【l,r】这段区间里,就知道是否存在了 那对于第一个操作,我们要如何进行更新原创 2021-02-08 15:16:42 · 132 阅读 · 0 评论 -
【思维+线段树】牛客牛客练习赛66 E骚区间
题面 https://ac.nowcoder.com/acm/contest/6112/E 题意 求在一个序列中有几个【L,R】满足a[l]是这个序列的次小值,a[r]是这个区间的次大值 思路 因为左右两边的性质相关相反,所以我们考虑把一个端点固定下来以后,找另一端的约束区间 首先我们把左端点固定下来,用左端点是次小值的这个性质,把右端点的约束区间确定下来,比如说: 如图这个区间,对于第二个数4而言,以4为左端点满足条件的区间只有【2,3】和【2,4】,以左端点为4的约束区间为【3,4】 所以这个地原创 2021-01-19 19:07:31 · 114 阅读 · 0 评论 -
【线段树】L - GTY‘s gay friends
题面 http://acm.hdu.edu.cn/showproblem.php?pid=5172 题意 给你n个数,m次查询,每次询问一个区间【l,r】,问这个区间【l,r】是否满足【l,r】之间的数是【1,r-l+1】的一个排列 思路1:题意转化+线段树 对于一个区间,我们可以把它【1,r-l+1】的排列转化成满足以下两个条件: 【l,r】的区间和为len*(len+1)/2,其中len=r-l+1 对于【l,r】中的每个数,他的前一次出现必须在l这个位置之前 对于第一个问题来说,我们可以直接用前缀和原创 2020-12-11 16:01:01 · 154 阅读 · 0 评论 -
【线段树上dp】Codeforces 750 E New Year and Old Subsequence
题目链接:https://codeforces.com/contest/750/problem/E 题意 给一个1~n的数字串,每次询问在区间【l,r】之间至少要删除几个字符使得剩下的的数中有2017但是没有2016 思路 我们会发现,这个问题由两个子问题构成: 对于一个串,我们要如何来计算需要删除几个字符 如何将这个问题转化成一个区间查询的问题 问题1解决 显然这个问题要用dp来解决,但是怎么解决呢 这个地方用到了矩阵和floyd最短路的转移 假设说这个问题求的是1~n的字符串的转移,那么代码如下原创 2020-08-07 20:25:48 · 146 阅读 · 0 评论