专栏文章

5e5, 10s 最严厉的父亲

CF2153F题解参与者 3已保存评论 2

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
2 条
当前快照
1 份
快照标识符
@minmxlha
此快照首次捕获于
2025/12/02 05:02
3 个月前
此快照最后确认于
2025/12/02 05:02
3 个月前
查看原文
题意:给出一个长度为 nncute 的序列 a1,a2,,ana_1, a_2, \dots, a_n,以及 qq 次询问,每次询问给出 l,rl, r,求 al,al+1,,ara_l, a_{l+1}, \dots, a_r 中出现次数为奇数的数之和。强制在线。
正常选手可以注意到题目给出了 cute 序列的定义。这是一个很好的性质。但是我是一个注意力涣散的人,所以我没有注意到序列 aa 是 cute 的。因此这里直接给出任意序列的做法。
考虑到 n5×105n \le 5 \times 10^5,而时限是 10s10\mathrm{s},这不禁唤起我们做 ynoi 的美好回忆,吸引这我们去触碰根号算法的禁地。
于是我们搓一个分块做法:序列按照 B=nB=\sqrt n 分块后,预处理所有 O(n×n)=O(n)O(\sqrt n \times \sqrt n) = O(n) 个整块区间的答案,耗时 O(nn)O(n \sqrt n)。然后对于一次查询:
  • 若端点在同一块,直接暴力;
  • 否则,先获取中间整块的答案(已经预处理过),然后加上两边散块的贡献。在计算贡献时还需要得知每个数在整块中出现次数的奇偶性,这里可以直接给每个数开一个前缀和来计算。但是 O(nn)O(n \sqrt n) 的空间会炸,所幸我们只需要储存 0/10/1,因此 bitset 压位解决。
可见查询的复杂度均为 O(n)O(\sqrt n)。整个算法复杂度为 O(nn+qn)O(n \sqrt n + q \sqrt n)

评论

2 条评论,欢迎与作者交流。

正在加载评论...