comet-8-D(BIT)

题目链接

https://www.cometoj.com/contest/58/problem/D?problem_id=2758

题解

需要转换大量模型。。

为了使得当前这个点为家,他的出点必须不能被选中,而考虑一下可以发现,有用的出点仅有在他左右两边离他最近的两个点(设为 $l_i$ 和 $r_i$),这样就可以转化为若区间也包含了这个限制这个点的两个点之一,这个点就不产生价值。。

然后就可以类似与做区间本质不同数的做法去打标记了,先按区间右端点排序,对当前的点 $i$ ,给所有左端点加上他的价值,由于有 $l_i$ 的限制,当左端点小于 $l_i$ ,其价值得被减回来。。

然后对 $r_i$ 的限制,如果 $r_i$ 被右端点包含,那么 $i$ 将永远不产生贡献,只要将 $i$ 和 $l_i$ 的影响撤销即可。。

这些操作均可用 BIT 实现




代码