传送门 0商品库存管理 - 蓝桥云课
思路:如果不执行某个操作后,商品的库存量变为0,那么说明,这个商品的库存量只能为1 所以我们统计库存量为1的商品
样例区间
1 2
2 4
3 5+1次数 1 2 2 2 1
id 1 2 3 4 5
const int N = 3e5 + 10;int n,m;
int a[N],A[N];
int l[N],r[N];void insert(int l,int r)
{a[l] ++;a[r + 1] --;
}void solve()
{cin >> n >> m;for (int i = 1;i <= m;i ++){cin >> l[i] >> r[i];insert(l[i],r[i]);//差分} for (int i = 1;i <= n;i ++) a[i] += a[i - 1];//前缀和int cnt = 0;//记录始终为0的位置的个数for (int i = 1;i <= n;i ++) {if (a[i] == 1) A[i] = 1;//如果操作次数一共为1,删掉这个区间后就变成了0;记录这个位置,再用一个前缀和来快速计算if (!a[i]) cnt ++;}for (int i = 1;i <= n;i ++) A[i] += A[i - 1];for (int i = 1;i <= m;i ++)cout << A[r[i]] - A[l[i] - 1] + cnt << endl;
}