题目大意:给你一个序列,求某区间出现不同的数的个数。 貌似离线树状数组是最好的解法 先把所有询问挂在它们询问的右端点上 然后从头到尾遍历这个序列,记录这个位置的值上一次出现的位置 那么,当遍历到第i位时,如果a[i]在之前出现过,就在它上一次出现的位置-1 这个操作的意义是,第i位已经有a[i]了, ...
分类:
编程语言 时间:
2018-09-24 23:20:40
阅读次数:
196
莫队第二道,有点感觉。。 ~~只不过这种感觉建立在无修改上面~~ 这道题跟上面一道HH的项链是一样的。只不过要你求的变成了平方和。 我就非常的naive,在莫队的时候没有用sum记录,暴力去统计,结果全部超时GG。 其实只需要减掉原来的平方和,再加上新的平方和就可以了。 其他的基本都差不多。 代码: ...
分类:
其他好文 时间:
2018-09-17 16:15:54
阅读次数:
181
原题为莫队,然而某网站扩大数据范围。 ~~逼我用树状数组~~ 题解:离线树状数组,存入所有询问。按r从小到大排序。然后从1到n遍历,维护动态树状数组,记录之前某一点到该点的距离。 代码: #include<cstdio> #include<algorithm> using namespace std ...
分类:
其他好文 时间:
2018-09-01 20:30:45
阅读次数:
140
" 传送门 " 自从“HH的项链”被树状数组干爆了之后,莫队终于扬眉吐气了一把。 很经典的莫队模板题,好像没什么好说的…… 代码有(十)些(分)冗长,将就着看吧…… cpp include include include include include define LL long long usi ...
分类:
其他好文 时间:
2018-08-20 21:55:34
阅读次数:
217
题目大意 给一段长度n(n<=100000)序列,每次询问一段区间(个数<=200000),问区间中的数字种数。 题解 本题特别之处在于区间内的数字种数不满足区间的相加性,所以我们可以加约束条件。我们不妨考虑维护一个树状数组维护数字种数。显然当询问的r固定时,对于每一个数值,我们只保留其在[1,r] ...
分类:
其他好文 时间:
2018-08-16 19:45:49
阅读次数:
124
树状数组+排序。这种没有修改一眼就想到了离线。看了题解觉得挺神的。 但我想了想好像加个修改操作也可以,因为也可以按照修改操作顺序排序, 修改操作树状数组中只用 复原原来删的前面的数,删除修改的数。 ...
分类:
其他好文 时间:
2018-08-05 14:24:19
阅读次数:
122
与bzoj3585: mex的线段树做法有着异曲同工之妙 题目描述 HH 有一串由各种漂亮的贝壳组成的项链。HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH 不断地收集新的贝壳,因此,他的项链变得越来越长。有一天,他突然提出了一个问题:某一段贝壳中 ...
分类:
编程语言 时间:
2018-08-04 21:37:12
阅读次数:
183
题目描述 HH 有一串由各种漂亮的贝壳组成的项链。HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH 不断地收集新的贝壳,因此,他的项链变得越来越长。有一天,他突然提出了一个问题:某一段贝壳中,包含了多少种不同的贝壳?这个问题很难回答……因为项链实在 ...
分类:
其他好文 时间:
2018-08-02 22:42:08
阅读次数:
127
传送门 话说这好像HH的项链啊…… 然后就说一说上次看到的一位大佬很厉害的办法吧 对于所有$r$相等的询问,需要统计有多少个不同的数,那么对于同一个数字,我们只需要关心它最右边的那一个 比如$1,2,3,4,1,2$,对于所有$r=5$的询问,我们不用去管第一个$1$因为它一定可以被第五个$1$代替 ...
分类:
编程语言 时间:
2018-07-31 11:18:53
阅读次数:
131
对于一个lr,每个颜色贡献的是在(1,r)区间里出现的最右位置,所以记录一个b数组表示当前点这个颜色上一个出现的位置 然后把询问离线,按r升序排序 每次把右端点右移,把这个点在树状数组上+1,并且在当前这个点的b位置上 1(表示没用了),然后树状数组前缀和减一下即可 ~~我写的~~莫队会T cpp ...
分类:
编程语言 时间:
2018-07-29 10:45:57
阅读次数:
217