题目描述:
有一个长度为 n 的 01 数组 a,给定 m 条形如 l r x 的限制,表示 i=l∑rai≤x,你需要在这些限制下最大化 i=1∑nai,并输出这个值.
- 01 数组:每个元素要么为 0,要么为 1.
数据范围:
1≤n,m≤105,数据保证有解.
蒟蒻的思路:
将限制区间以左端点为第一关键字,右端点为第二关键字从小到大排序,对于每一个区间 [l,r],统计该区间内已有的 1 的个数 cnt,如果 cnt≥x,就从后向前依次赋 0,直到区间内 1 的个数等于 x;如果 cnt<x ,就从前向后依次赋 1,直到区间内 1 的个数等于 x 或区间内全为 1,使用类似 脑洞治疗仪 中的线段树技巧可做到 O(mlogn).
蒟蒻的问题:
-
该思路是否能被 hack ?
-
原问题是否可以使用差分约束?如果可以,如何找到 sn 最大的一组解?
-
是否可以使用贪心 + 优先队列或者其他方法解决该题?又如何操作呢?