1 条题解
-
0
自动搬运
来自洛谷,原作者为

CXY07
It's my fiesta.搬运于
2025-08-24 22:33:18,当前版本为作者最后更新于2021-08-20 20:00:14,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
本题解同步发布于 My Blog
题意:
给定长度为 的序列 ,共 组询问,每次询问一个区间 中,在 意义下的最小值。
。
受不了了根本卡不动这题我曾经自己编出来过,但只会 。/kk
考虑根号分治。设一个阈值 ,分别考虑 和 的询问。
对于 的询问,本质不同的 只有 种。因此可以将其中 相同的拿出来一起做。对于一个固定的 ,设 ,使用分块或线段树等 预处理的数据结构进行维护即可。这里的复杂度是 或 。
对于 的询问,考虑到 ,所以考虑枚举 的倍数 ,然后寻找一个 使得 且 最小。不难发现一个询问会变成 个上述问题。这里需要注意一下空间。
考虑将序列中的元素降序排序,所有询问也降序排序,双指针维护,依次将 的元素插入序列,然后询问区间最小值即可完成上述问题。
上述问题中,插入只有 次,而询问有 次,因此考虑把插入的复杂度变高些以平衡查询的复杂度。
考虑使用猫树的思想,做到 的查询。但猫树的插入是 的,无法接受。因此先分块,在分块的结构上套一个猫树,每次插入一个元素后更新整块的值,再记录每个块的前缀、后缀 ,就可以做到 的插入, 的查询。
因此此部分是 。
发现 取 复杂度达到最优,最后时间复杂度是 。
代码先不放了 因为本人还没卡过
- 1
信息
- ID
- 6693
- 时间
- 1000ms
- 内存
- 128~256MiB
- 难度
- 6
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者