Loading

CF1632D New Year Concert

好的,2000 的题卡我 \(2\) 小时。

首先考虑把这些不合法的区间给拎出来,比较显然的解法是对于每个前缀保留这些不合法区间,将其划分为若干个集合,使得每个集合的区间交不为空,此时答案就为最少集合数。

如果你要这么硬做我也没话说,不过我不是很会维护这个东西。

发现一些性质,这些合法区间显然只有 \(O(n)\) 个,考虑对于一个右端点 \(i\),如果有两个左端点 \(l1, l2\) 满足条件,那么就会得到区间长度更长的 gcd 反而大于区间更短的 gcd,矛盾,得到 \(i\) 最多只有一个满足条件的左端点 \(i\)

然后发现不能存在两个不合法区间使得它们是包含的,否则就出现了区间长度变短反而 gcd 也变小了。

这个时候按照右端点排序 DP 即可。

posted @ 2025-10-13 11:59  Alexande  阅读(2)  评论(0)    收藏  举报