2025.2.4 鲜花

hzoi898 交通网络 题解?

Underground

是那个纯音乐啦~

Ans

注意到:一个只能说真话,一个绝不说假话

这题有四样读法,你知道么?

出一个毒瘤 ds 的最好方式就是把序列问题直接出到树上,考察选手树剖能力。

正确的题意:

给定一棵树,在时刻 \([tl, tr]\) 链加,查时刻 \(t\) 时链上值不为 \(0\) 的边数。

这个题没啥意思,区间加(任意时刻序列中的值 \(\ge 0\)),区间数 \(0\) 板子,并且还放暴力过了。

考虑一个有点意思的错误读法。

时刻 \([tl, tr]\) 区间加,查时刻 \(t\) 时区间值不为 \(0\) 的极长连续段数。

有两种做法:

  1. Qyun 式:

    考虑直接标记永久化,删除的时候直接用其两个儿子更新就可以了。

  2. wang54321 式:

    考虑维护区间 \(0\) 的个数 \(x\) 和区间连续两个都是 \(0\) 的个数 \(y\)

    发现对于一个区间极长段数 \(= \frac{x * 2 - y * 2}{2} = x - y\)

    考虑每两个数之间插入一个虚点,其值是这两个数的和,于是区间连续两个都是 \(0\) 的数的个数等于区间虚点 \(0\) 的个数。

    分别维护原序列和虚点即可。

稍微扩展一下也是容易的,考虑:区间加(任意时刻序列中的值 \(\ge 0\)),区间值不为 \(0\) 的极长连续段数。

2 直接就可以做,1 发现其标记永久化的意义是保证其儿子的值是对的,并且标记始终在其能在的最上层(为了保证查询当前节点时一定有标记),其实是可以推标记的,考虑两个儿子标记如何合并到其父亲,本质上是取 min,但是需要维护节点信息,考虑每个节点维护一下其没有标记时的信息(大概是段数、左右端点是否有值),加上一些分讨还是可以向上传递的。

上树也是直接上,就是有不少细节。

P

补一下昨天的 zzz 图

\[当面对两难的抉择时,不妨丢一枚硬币吧 \]

\[并非是要靠那二分之一的机运来帮你做出抉择 \]

\[而是因为当硬币被抛上空中,开始旋转的那一瞬间 \]

\[你会突然明白 \]

\[自己想要的是什么 \]

posted @ 2025-02-04 18:51  5k_sync_closer  阅读(42)  评论(3编辑  收藏  举报