![](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 · 137 阅读 · 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 · 122 阅读 · 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 · 178 阅读 · 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 · 157 阅读 · 0 评论