使用无思维难度的分块通过文艺平衡树板子
  • 板块学术版
  • 楼主Eric998
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/9/20 20:22
  • 上次更新2023/11/2 18:57:24
查看原帖
使用无思维难度的分块通过文艺平衡树板子
678534
Eric998楼主2023/9/20 20:22

分为n\sqrt n块,建立一个块表,将现在的每个块都给一个编号,编好号加入块表(下标从1开始)。建立块数组block=[1,2,3,......,n]block=[1,2,3,......,\sqrt n]

定义函数 blockq(x),如果x>0x>0,返回块表的第x个,否则返回块表的第∣x∣|x|个翻转后的结果。复杂度O(n)O(\sqrt n)。

区间翻转时,对于整块暴力翻转这段整块对应的block数组并将数组内所有数取相反数。同时更新tag=1。

非整块操作,如tag=1将此块对应的数替换为blockq(x),将tag清空,暴力修改需要修改的部分,将新块存入块表,更新此块的编号为块表分配的编号。

查值显然可以直接暴力。稍微改改可支持区间修改,区间求和等线段树操作

所以分块是数据结构之真理(雾

2023/9/20 20:22
加载中...