随笔分类 - 数据结构
摘要: 题目链接:永无乡 思路:利用无旋。先看操作,(因为你不能够保证一个树中的所有元素都小于另一颗树,所以不能通过merge函数将两树合并)可以这样处理,我们考虑两个的合并,可以参考启发式合并的思路,暴力的遍历一个较小的集合,并将其加入
阅读全文
摘要:题目链接:Gorgeous Sequence 思路:本题用普通线段树完成不了将区间内的大于k的数都等于k的操作,但吉老师线段树可以。我们需要维护的东西有:最大值,次大值,最大值的数量,区间和。对于每一次操作,我们分类讨论(为了讨论方便,我们将当前修改的值设为k,当前区间最大值设为ma
阅读全文
摘要:题目链接:M.Stone Games 思路: 先上图: 所以假设当前满足中所有元素都已经选完,那么我们发现,我们判断是否存在没有什么意义,只有判断中元素存在才有意义,选择就是为了能构成上述图中情况1。因为有一个
阅读全文
摘要:题目链接:D. Cut and Stick 思路:询问最少需要分成几个区间,如果该区间众数小于等于,那么显然答案是1。否则的话,我们需要尽可能的满足众数的要求,将尽可能多的众数放在一个区间里面,所以一个区间里面最多能够放的个数是其他数的个数+1,其余的
阅读全文
摘要:题目链接:D. GCD of an Array 思路:纯纯的数据结构题目,一看数据范围很显然是维护每一个质数的最小的个数,内的素数个数不超过,所以我们对于每一个素数用一个map来存对于的该素因子的个数,然后用另外一个map存反(其实可以用multiset代替)
阅读全文
摘要:题目链接:L3-018 森森美图 题意:这个题的题意很迷,大概意思就是给你一个起点一个终点,然后起点和终点连线的直线将图划分成两部分,然后分别求这两部分的起点到终点的最短路径val相加,需要注意的是,对于边权的计算,这个题边权的计算有点迷,大概就是若a->b->c均不是斜向边,那么总边权为$a+b+
阅读全文
摘要:题目链接:D. Playlist 题意:略 思路:模拟,先思考我们需要完成什么操作,因为数组是级别的,所以用遍历的方式一次次的删除,太慢,所以我们需要一种数据结构,支持插入,删除,查找,遍历,且最坏时间复杂度是,平衡树恰巧能够干这个活,所以我们选择用set来处理
阅读全文