NOIP 模拟赛:2024-9-28

打的挺好,好在最后 40min 想起来给 B 对拍一下捡回来 100pts。

T1

观察到若每个间隔 0 的个数为 i,则 1 的个数 ni,这启示我们枚举 0 的个数,然后快速找到下一个 1 的位置。

记录 0 的前缀个数 + 二分可以做到 O(nlog2n)。另外,如果记录 ti 表示最小的 x 满足 si=11xi0,可以做到 O(nlogn)

T2

一般这种看起来不太可做的都是根号。

把出现次数 n 的颜色记作小色,否则记作大色。预处理 near[i][j] 表示颜色 i 与大色 j 相邻的灯个数,是 O(nn) 的;然后再维护一个 f[i],表示大色 i 有多少个相邻的亮灯。

T3

结论题。观察到一个点如果可以以 d1,d2,d3 到达,且 d1d2d3d3[1.1×d1],那么 d2 是没有必要保留的。因为如果询问的区间 [dis,1.1×dis] 包含 d2,一定包含 d1d3

因此在一个结点上,最多只需要保留 O(2log1.1V) 个距离。因为连续三个至少 ×1.1。因此直接拓扑排序,在一个结点处清理它的距离即可。复杂度 O(nlogn),常数较大。

T4

观察到每次可以走的格子一定是若干整行、整列的并。对于一行,它最后一次清零的时间为 t,若第 i 次操作是询问,限制为 v。那么这一行能走当且仅当 tiv

因此可以使用两颗线段树维护每一行、每一列的清零时刻,需要支持区间 max,min 和单点赋值。然后分类讨论即可。细节略去。

posted @   FLY_lai  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
点击右上角即可分享
微信分享提示