- 博客(13)
- 收藏
- 关注
原创 P2617 Dynamic Rankings
2.查询的时候,把我们需要的(或者说容纳了询问区间所有值的线段树)--即构成这颗,查询区间权值总和线段树,的根存起来,求第k小的时候再来计算这颗权值总和线段树的左子树的和,然后判断是否进入这颗权值总和线段树的左子树或者右子树。ps:这里还有个离散化,离线处理所有操作,把涉及到的权值全部放进数组里,然后用二分返回离散化后的值。1.用树套树实现log修改。
2024-01-17 13:21:13 554
原创 动态求逆序对--树状数组套线段树
思路很容易想,麻烦的就是要实现一下动态开点线段树的修改操作,由于传统的主席树是依赖于前一个版本,所以如果想修改的话时间复杂度肯定会爆炸,于是我们想到了树状数组这个东西,把我们要修改的线段树的个数降低到了log级别,而每次修改也是log,所以时间复杂度上是过的去的,怕卡常的话可以加个快读快写,然后注意开一下Long long。所谓树状数组套线段树,就是把朴素版的树状数组里的一个个元素换成一颗颗独立的线段树,大体的操作没有变,就是在修改值的时候用到了动态开点线段树的修改。
2024-01-12 12:45:02 568 1
原创 P3313 [SDOI2014] 旅行
优化:动态开点,不需要的子节点我们不开分支而只开需要的分支,数据拉满的话,也就只用开N*logN的空间,因为如果有N颗线段树,每颗线段树的点不会超过一个。暴力思路,对于每一个集合我们都开一颗线段树,然后处理询问的时候直接在相应的线段树里找要询问的区间进行处理即可,但是这样空间会爆。
2023-10-30 16:58:08 58
原创 P3976 [TJOI2015] 旅游
int l, r;int maxx;int mmin;int lazy;int lmax;int rmax;int val[N];int n;int tot;tot++;xds temp;r_1 = l_1;
2023-10-25 22:39:27 51 1
原创 P4092 [HEOI2016/TJOI2016] 树
思路:离线做法,并查集(弱弱我一开始想到了用并查集,但是不知道怎么在线处理,后来看了题解之后恍然大悟捏)
2023-10-22 14:59:56 58 1
原创 P4408 [NOI2003] 逃学的小孩
思路:找出树上的直径端点,然后枚举树上的其他点,答案取最大值。(弱弱我一开始找直径中点,然后dfs求除直径外距离中点的最长链统计答案,不知道为什么错了捏)
2023-10-20 12:41:00 67 1
原创 洛谷--[SDOI2013] 直径
思路:类似于找俩端有毛的扫把的主干,然后把俩边同样长度的树枝找出来即可,注意要处理直径中点有分支的情况,直径中点有一个分支且没有其他的分支,答案为直径的一半,否则答案是0。
2023-10-18 12:58:38 44
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人