Loading

CF1965F Conference

这题真他妈牛逼。

考虑到连续的一段如何判定,比较蠢的办法是根据 Hall 定理,枚举每个子集,看 \(N(S)\) 的大小去判定是否有匹配。

我们猜一个更加高明的结论,用 Hall 定理判定一个区间的所有子串即可!

但是你会发现会被这组样例搞掉:

3
1 3
2 2
2 2

不合法的 \(S = \{1, 3\}\),这显然不是一个子串。

但是我们还能改,发现问题在哪里,可能中间一段区间特别多,我们就炸掉了。

假设我们可以通过转化,使得区间左端点都互不相同,这样的话,就可以套用上述判定过程了。

我们注意到,对于一个 \(l\),我们找到一组对 \((i, j)\),使得 \((i, j)\) 不被之前的左端点转化,\(i \le l\),且 \(j\) 是所有满足条件里最小的,那么,我们就可以将 \((i, j)\) 转化为 \((l, j)\),然后每个对的左端点就互不相同了,就可以套用上述判定了。

可以利用区间合法的单调性辅助做题,至于为什么这样的转化是可以的,个人感觉比较困难,更多的是靠直觉。

posted @ 2025-08-30 16:55  Alexande  阅读(7)  评论(0)    收藏  举报