首先看到最大最小问题 先考虑二分答案可不可行
因为随着时间的流逝 会在一个时间点使得管道里全是水 令管道内没充满水的状态是0 充满水的状态是1 那么对于每一秒的状态就是一个01串 存在单调性 二分答案 √
题目就变成了 在一个01串中找到第一个1的位置 (可能没0)
那么l和r也很容易想 l = 1 r = 2e9( 因为在1e9秒打开 再过个1e9秒灌满)
check函数怎么写? 怎么在O(n)判断 :给你n条线段 问这n条线段是否填充满了[1, len]数轴
解法 : 区间合并 (803. 区间合并 - AcWing题库)
区间合并的过程是 先将所有区间按照左端点第一升序 右端点第二升序排序
然后开个ed记录当前区间的右端点 如果下个区间的左端点在ed后面 那么就意味着多加一个区间 不然ed = max(ed, 下个区间的右端点)
当然这里只用判断是否存在一个[l, r]的区间 那么我们可以只记录当前区间的左右端点 最后再判断是否be == 1 && ed == m