luogu1155
我真傻,真的 。。。
( i , j ) (i,j) (i,j)不能压入同一个栈当且仅当存在 k k k,满足 i < j < k i<j<k i<j<k且 a k < a i < a j a_k<a_i<a_j ak<ai<aj。
然后二分图染色+模拟判即可。。。
bzoj3693
Hall定理:
对于任意几组它们的区间的集合的大小必须要
≥
\geq
≥这几组人数的总和。
破环为链
若某几组的区间不相交且不合法,那么它们本身必然存在不合法的情况。
所以问题转成对于连续的一段
[
L
−
R
]
[L-R]
[L−R],
R
−
L
+
1
R-L+1
R−L+1是否大于所有
[
l
i
,
r
i
]
[l_i,r_i]
[li,ri]在
[
L
,
R
]
[L,R]
[L,R]内的
a
i
a_i
ai之和。
即 ∑ a i ≤ R − L + 1 → ∑ a i + L − 1 ≤ R \sum a_i\leq R-L+1\to \sum a_i+L-1\leq R ∑ai≤R−L+1→∑ai+L−1≤R
将组按端点排序后线段树维护即可。