关于Ynoi经典分块杂谈
静态区间逆序对,区间众数
P5046 [Ynoi2019 模拟赛] Yuno loves sqrt technology I
强制在线区间逆序对,做法是预处理,然后整块散块分开算贡献,复杂度刚好平衡,常数很大,比较卡常。
P5047 [Ynoi2019 模拟赛] Yuno loves sqrt technology II
区间逆序对离线做法,二次离线模板,常数很小也比序列分块好写。
P5048 [Ynoi2019 模拟赛] Yuno loves sqrt technology III
区间众数,特别小清新的分块,常数很小,
当然具体用到区间逆序对,众数的时候往往并不完全是板子,需要很多细节处理。
P7882 [Ynoi2006] rsrams
题意就是求一个区间的所有子区间的绝对众数之和,如果没有绝对众数那么那个区间绝对众数就是 0。
对于判断一个数
做个前缀和过后不难发现问题变成求区间顺序对数。
考虑对颜色出现次数根号分治。
1 的个数是与
P7448 [Ynoi2007] rdiq
主要讲述了 nb 的二维数组
这个题直接二离套用这个就行了,做法跟博丽灵梦差不多的。
还有个经典的莫队题就是 P5355 [Ynoi2017] 由乃的玉米田
P5355 [Ynoi2017] 由乃的玉米田
前三个用 bitset 配合莫队是简单的,但除法会出点问题,当
但这些
离线对每个
扣掉莫队的简单题和莫队与根号分治配合的题,还有一大类题就是序列分块。
先从小的讲起。
P5356 [Ynoi2017] 由乃打扑克
区间加区间第
具体讲下直接分块的实现,首先查询是要二分,然后变成查区间小于等于
散块查是
其实散块可以提前归并到一起,而且每次查询归并只用做一次,这是
P3712 少女与战车
这个题直接先 dfs 序把树拍扁,只要你的实现没锅,套用上边的分块就能过,但因为至于很小所以还有别的阴间做法。
谈几个大分块的经典题。
P4117 [Ynoi2018] 五彩斑斓的世界
大分块入门题,考虑
记一个块最大值为
对于一个块,假如
假如
而一个块的
P4119 [Ynoi2018] 未来日记
区间将
区间第
替换还是考虑用并查集状的东西维护,不难发现一个块颜色数(数的种类数)是不断减少的,考虑替换的时候假如这个块含
主要难度在实现。
P7710 [Ynoi2077] stdmxeypz
小弱智题,先 dfs 序拍扁树,然后根号分治模数
所以为啥能有黑?
P7446 [Ynoi2007] rfplca
弹飞绵羊的强化版。
考虑同样的方式维护,对每个块维护两个数组
考虑每次修改暴力重构一下,经过
求 lca 的过程类似树剖,慢慢跳,不难发现出块次数是
P4690 [Ynoi2016] 镜中的昆虫
区间覆盖区间数颜色。
Trick 题,考虑对每个数维护数组
不难发现
不难发现查询变成
为了卡空考虑离线滚块,常数很小轻松过。
P5397 [Ynoi2018] 天降之物
卡常题,全局做法是根号分治,分类讨论出现次数
但是此题有序列分块做法,具体是维护块内答案,以及数的出现位置,然后从左往右扫。
块内只有
而一次单点修也只会改变一种数与其他数的答案,不难发现只会修改
然后就完了。势能一下发现可以支持把区间的
简单的东西差不多就这些了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!