P3514 [POI2011] LIZ-Lollipop 题解

方法一:

我们发现找到一个为 $x$ 的区间是困难的

但 $\le x$ 是 $=x$ 的必要条件,于是考虑放缩。

找到一个 $\le x$ 的区间是平凡的,可以直接二分。

假设左端点为 $1$。

若二分出为 $x$,即答案。

若二分出为 $x-1$,如何构造出 $x$ 还是不容易,于是考虑何时无解

然后考虑更新 $l$,不可能直接计算,考虑递推/构成

由题得未选到的第一个数是 $2$,那么分类讨论。

如果第一个位置为 $1$,这时可以直接去 $1$ 添 $2$。

否则,我们发现这样的区间可以直接搬运,即 $l,r$ 同时加 $1$。

我们发现第二个过程其实可以优化,预处理随便跳即可。

这样就是 $O(m \log n)$ 的,可以通过。

预处理代替二分即可 $O(n)$。

方法二:

注意到 $\omega$ 很小,我们可以从此入手讨论。

  • 考虑初始时全为一的情况。

这样子区间集合等价于从一开始的区间集合。很好做,直接判断大小。

考虑加一个 $2$,发现不是很好做。(有佬会做请教教我)

但是我们可以考虑另一种简单情形:(这步挺神仙的,不是很常见)

  • 考虑初始时全为二的情况。

显然发现奇数无解,偶数判断大小。

  • 考虑加入一个 $1$,分讨一下:

若不经过 $1$,则同原来一样。

若经过 $1$,我们发现奇偶性改变了,这样就可以产生与原来不交的一个集合的答案。且依然是从一开始的。

然而构造不太好整了,于是仍然考虑放缩,但只是考虑判断无解,即分析答案集合。

  • 考虑加入两个 $1$,分讨一下:

同样的考虑奇偶性与分讨:

考虑奇数与前者无异,取 $\max$ 即可,而偶数就会新产生结果,单独分析答案集合。

我们希望它可以满足前者的一些性质,此题中为连续性。

手摸一下似乎是满足的(省略)。

容易证明(手摸几组后就很显然了):

我们发现,左端点在第一个 $1$ 左边,右端点在第二个 $1$ 右边的区间产生的数的集合,与左端点在第一个 $1$ 右边,右端点在第二个 $1$ 左边的区间产生的数的集合,刚好可以拼成一个从 $2$ 开始的连续区间。

所以这样偶数的区间还是从最小值到最大值。

  • 由此我们可以猜想:

我们只需求出奇偶最大值即可判断无解。

这仍然不是很好求的,至少不能用之前的思路了。

我们考虑极限,若全选,必然为奇偶最大值中的一个。

考虑借此递推另一者,由于只有 $1$ 能改变奇偶,所以我们找到最靠前的与最靠后的,减去前/后缀即可。

最后考虑原问题,根据前面的推导,显然是分奇偶递推。

考虑从 $x$ 递推至 $x-2$ 是的情况:(注意这个递推其实也是一种 $\text{dp}$,所以要考虑后效性)

首先对于任何一个 $x$ 递推至 $x-2$ 是否有后效性呢?(即是否所有 $x-2$ 在构造同奇偶答案上等价)

考虑前面的结论,答案是连续的,所以对于任意一个 $x-2$ 均有方案。

然后考虑转移:

两边至少有一个 $2$,我们考虑删去任意一个即可。

两边至少没有 $2$,必然全为 $1$,我们考虑全部删去即可。

于是我们对整个序列的奇偶最大值的区间做一遍,我们就用预处理做完了这道题。

作者:imxuzh

出处:https://www.cnblogs.com/imxuzh/p/17979592

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   imxuzh  阅读(10)  评论(1编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up dark_mode palette
选择主题