5407. 管道

5407. 管道 - AcWing题库

首先看到最大最小问题 先考虑二分答案可不可行

因为随着时间的流逝 会在一个时间点使得管道里全是水  令管道内没充满水的状态是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

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值