原创
2022-02-10 14:10:18
17 阅读
原创
2022-02-10 14:10:01
56 阅读
原创
2022-02-10 14:08:55
18 阅读
原创
2022-02-10 13:40:31
8 阅读
原创
2022-02-10 10:22:14
23 阅读
原创
2022-02-08 13:42:57
15 阅读
原创
2022-02-08 13:42:30
99 阅读
原创
2022-02-08 13:39:33
36 阅读
原创
2022-02-08 13:37:09
22 阅读
原创
2022-02-08 13:36:32
24 阅读
LINK题意给定长度为nnn的数组aaa,对于每个aia_iai选定一个l<=i<=rl<=i<=rl<=i<=r,把区间[l,r][l,r][l,r]排序,中位数是第(l+r+1)/2(l+r+1)/2(l+r+1)/2个数记作kkk再记aia_iai在排序后的数字中是第fff个位置,那么代价是∣k−f∣|k-f|∣k−f∣求出最大值考虑只查询位置iii的答案怎么做,若选定区间[l,r][l,r][l,r],那么aia_iai可能在中位数左边,也可能
原创
2022-02-06 15:10:36
20 阅读
原创
2022-02-06 15:04:26
16 阅读
原创
2022-02-06 14:59:32
31 阅读
LINK由于这是一个排列,所有所有可能的答案对不超过nln(n)nln(n)nln(n)暴力预处理出来,然后考虑对每个位置rrr维护一颗权值线段树线段树的叶子节点kkk维护的是kkk和[k+1,r][k+1,r][k+1,r]形成了多少答案对那么考虑[1,i][1,i][1,i]和[1,i+1][1,i+1][1,i+1]的权值线段树,差异其实是比较小的我们完全可以效仿主席树那样去继承前一颗权值线段树然后询问的话,直接在[1,r][1,r][1,r]的权值线段树里找到[l,r][l,r][l,r
原创
2022-02-06 14:53:27
37 阅读
LINKⅠ.si,1=is_{i,1}=isi,1=iⅡ.si,j<=si,j−1s_{i,j}<=s_{i,j-1}si,j<=si,j−1Ⅲ.si,js_{i,j}si,j在数组aaa中的是posjpos_jposj,那么∣posj−posj−1∣<=k|p
原创
2022-02-06 14:50:01
18 阅读
原创
2022-02-06 14:46:52
58 阅读
LINK题意nnn个点的一棵树,每个点包含一个大写字母询问mmm次,每次问vvv到uuu路径组成的字符串中,串ABCBAABCBAABCBA的数量对于每组询问l,rl,rl,r,若l,rl,rl,r不在一条链上,可以先找出他们的lcalcalca为xxx可以拆分为(l,x)(l,x)(l,x)和(x,r)(x,r)(x,r)两条链计算答案,再合并起来这样一来,我们需要维护
原创
2022-02-06 14:37:20
73 阅读
原创
2022-02-06 14:32:12
87 阅读
原创
2022-01-06 09:39:39
26 阅读
原创
2021-08-27 10:04:27
45 阅读
排序这这这魔鬼才想得出来吧!!!假如对每个操作排序一遍复杂度上天!!但是区间排序能不能转换为线段树呢??可以的!!如果值域只有0,10,10,1,就先查询区间内有多少111升序排列,就是把后面的区间修改成111,前面修改成000这题也是同理,由于询问只有一组,我们可以二分答案,转化为010101线段树也就是二分某个值midmidmid,小于midmidmid的都变成000,否则变成111这里注意一点,midmidmid并不是答案,只是企图从结果中缩小范围而已!!对010101序列进行排序
原创
2021-08-27 09:58:31
59 阅读
原创
2021-08-27 09:58:13
69 阅读
贪婪大陆很有意思的一题实际上是因为自己太水了…很像线段树的题目,但一直找不到要维护的区间信息…转变一下思想,不就是求区间[l,r][l,r][l,r]有多少不同的区间覆盖过吗?如果区间[li,ri][l_i,r_i][li,ri]经过[l,r][l,r][l,r],满足li<=rl_i<=rli<=r为此我们可以用树状数组维护lil_ili来统计但是在这些区间内,如果ri<lr_i<lri<l也是不合法的所有我们再开一颗树状数组来维护rir_iri
原创
2021-08-27 09:58:11
49 阅读
原创
2021-08-27 09:58:09
90 阅读
原创
2021-08-27 09:58:09
37 阅读
原创
2021-08-27 09:55:01
41 阅读
原创
2021-08-26 17:28:04
29 阅读
传送门主席树做法创建nnn棵线段树,第iii棵线段树维护[1,i][1,i][1,i]中每个数出现的最右边位置那么查询[l,r][l,r][l,r]区间时,就去第rrr棵线段树上找左右大于等于lll的值即可#include <bits/stdc++.h>using namespace std;#define mid (l+r>>1)const int maxn = 5e5+10;int n,id,a[maxn<<1],last[maxn<<1]
原创
2021-08-26 17:27:58
55 阅读
原创
2021-08-26 17:13:04
18 阅读
原创
2021-08-26 15:55:06
48 阅读