关键等价:对一维区间族,若任意两区间都有交,则所有区间必有公共交点。 因而「存在两个不相交的区间」当且仅当「所有区间的公共交为空」。
把当前所有区间的左端点集合记为 L
,右端点集合记为 R
。公共交为区间 [max(L), min(R)]
。
于是答案判定只需:当当前区间数量 ≥ 2 且 max(L) > min(R)
时输出 YES
,否则 NO
。
动态维护:
小明和小红在玩一款与领地占领有关的对抗游戏。这个游戏的地图是一维的,从左到右有 n 个领地,分别编号为 1,2,…,n 。游戏初始时有一些可以选择的出生地,每个出生地由区间 [l,r] 描述,包含一段连续的领地,即编号 [l,r] 的领地。小明和小红这次游戏分配到了对抗的阵营,所以他们希望自己选的出生地包含的领地和对方不重合。
游戏周期性的更新它的出生地可选项,小明和小红想请你帮帮他们查看当前游戏出生地中是否有两个出生地不包含重复的领地。游戏在一开始没有任何出生地可选项,但是共有 m 次更新,每次更新要么添加一个出生地,要么销毁掉一个已有的出生地,请你在每次更新后告诉小明和小红是否有两个出生地不包含重复领地。
第一行 1 个整数 T,表示数据组数。 对每组数据有 4 行数据, 第一行两个整数 n 和 m ,表示领地总数和更新总数。
第二行 m 个整数 q1,q2,...,qm,qi 表示第 i 次更新的类型,如果 qi=0 则是删除出生地,qi=1 则是新增出生地。
第三行 m 个整数 l1,l2,...,lm, 第四行 m 个整数 r1,r2,...,rm。其中 [li,ri] 是第 i 次更新新增或删除的出生地的领地范围。
注意可能增加了出生地、(均是 1 到 2 的领地范围,2 个相同范围的出生地),后续一次删除出生地 [1,2] 只会删除一个。保证每次删除时都存在那样的出生地。
1≤T≤5,1≤m≤100000,1≤n≤109,0≤qi≤1,1≤li≤ri≤n
对于每组数据,输出一行共 m 个答案,分别表示对应每次更新后的答案:如果存在那样的出生地输出 YES ,否则输出 NO 。
输入
1
10 4
1 1 1 0
1 2 3 3
2 3 4 4
输出
NO NO YES NO
说明
第一次更新后仅有一个出生地 [1,2] ,不存在不相交领地的两个出生地。
第二次更新后有出生地 [1,2],[2,3],它们领地重合了。
第三次更新后有出生地 [1,2],[3,4],小明和小红分别选择,即可满足出生地领地不重合。
第四次更新后有出生地 [1,2],[2,3],它们领地重合了。