形式化题意:给定 m 个区间,若删除一个区间后总覆盖面积不变,求出可以被删除的区间数量。
前缀和+差分思想,计算 1∼n 中每个位置被覆盖的次数,进而求出被覆盖多次的位置。
最后扫一遍所有区间,若该区间内所有位置都被覆盖多次则计入答案。
#include <bits/stdc++.h>
一条长廊由 n 块连续编号的栏杆组成,编号依次为 1 到 n。现在有 m 名油漆工,第 i 名工人会在他负责的区间 [li,ri] 内的每一块栏杆上刷漆。每块栏杆只需要刷一次漆,如果某块栏杆已经被刷过,后来的工人就会跳过它,不再重复粉刷。无论工人工作的顺序如何,最终被粉刷的栏杆集合是唯一确定的。
为了节省成本,管理者打算解雇恰好一名工人,但他不希望解雇后最终被粉刷的栏杆集合发生任何改变。也就是说,原来被刷过的栏杆仍然被刷,原来未被刷过的栏杆依然空置。请你计算共有多少名工人满足:解雇该工人后,最终的粉刷结果与解雇前完全相同。
数据范围:n≤2×105,m≤105,1≤li≤ri≤n。
第一行输入两个整数 n 和 m,分别表示栏杆的数量和工人的数量。 接下来 m 行,每行包含两个整数 li 和 ri,表示第 i 名工人负责粉刷的栏杆区间。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册