专栏文章
ABC421F题解
AT_abc421_f题解参与者 4已保存评论 6
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @miny9p8z
- 此快照首次捕获于
- 2025/12/02 10:19 3 个月前
- 此快照最后确认于
- 2025/12/02 10:19 3 个月前
题意:有一个数组,初始为 。有两种操作,一是把当前操作编号 插入到 后面,另一种是求两个数 和 之间的数之和,并把它们删掉(不包括两端)。
正解
因为是有插入与删除,考虑使用链表(单向即可)。查询时,因为 的位置可能在 后面,所以从 和 开始一起往后跳,有一个跳到另一个时结束。代码不放了。(其实是我没写)
歪解
赛场上发现 的位置可能在 后面之后就放弃链表了。然而我不会平衡树。
发现可以使用分块 + 定期重构,不会的左转数列分块入门 6。维护每个数属于的块的编号 ,每个块的大小 与和 ,如果有块的大小大于 ( 是当前存在的数的数量)就全部重构。复杂度 ,显然跑不满且 AT 神机。最慢的点 1187ms,完全不卡常。
这个题比较特殊,经常会把一个块删光,所以调一下块长可能会更快,不过我没试。
相关推荐
评论
共 6 条评论,欢迎与作者交流。
正在加载评论...