当前位置: 首页 > wzjs >正文

无锡网站制作公司排名焦作网站建设哪家公司好

无锡网站制作公司排名,焦作网站建设哪家公司好,企业信息管理系统平台官网,wordpress 社区题目描述 有一根长度为 len 的横向的管道,该管道按照单位长度分为 len 段,每一段的中央有一个可开关的阀门和一个检测水流的传感器。一开始管道是空的,位于 Li 的阀门会在 Si 时刻打开,并不断让水流入管道。 对于位于 Li 的阀门&a…

题目描述

有一根长度为 len 的横向的管道,该管道按照单位长度分为 len 段,每一段的中央有一个可开关的阀门和一个检测水流的传感器。一开始管道是空的,位于 Li 的阀门会在 Si 时刻打开,并不断让水流入管道。 对于位于 Li 的阀门,它流入的水在 Ti (Ti ≥ Si) 时刻会使得从第 Li−(Ti−Si) 段到第 Li + (Ti − Si) 段的传感器检测到水流。 求管道中每一段中间的传感器都检测到有水流的最早时间。

输入格式

输入的第一行包含两个整数 n, len,用一个空格分隔,分别表示会打开的阀门数和管道长度。

接下来 n 行每行包含两个整数 Li , Si,用一个空格分隔,表示位于第 Li 段 管道中央的阀门会在 Si 时刻打开。

输出格式

输出一行包含一个整数表示答案。

样例输入

3 10
1 1
6 5
10 2

样例输出

5

评测用例规模 

解题思路

这一道题是典型的二分题目,框架和之前讲的冶炼金属是类似的,但关键就在于check函数怎么写。

在这道题目中,check函数就是一个区间覆盖问题,要判断子区间是否覆盖了原区间。我刚开始想的是,只要前一个的右端点大于等于后一个的左端点,一个一个比,最后能到达末尾就表示覆盖完了区间。这种我感觉不太好写,而且我觉得多多少少有些不对。有人这样写过吗,欢迎在评论区留言!

于是我又去看题解了,发现其实这种思路也挺不错的:按照区间的左端点进行排序,然后一步步拼接区间。有两个关键点:拼不上的情况--上一个区间的右端点加上1还达不到下一个区间的左端点;然后就是能拼上的情况了。但是我写的时候犯了一个错误,我写的判定条件是上一个区间的右端点大于等于下一个区间的左端点。之后画图分析我才发现,如果right是5,下一个区间的左端点是6,这样就会误判为拼不上,但实际是能够拼的。

附上我思考的时候画的图

代码实现 

 


import java.io.*;
import java.util.Arrays;public class Main {private static int n;private static int len;public static void main(String[] args) throws IOException {Scanner scan = new Scanner(System.in);n = scan.nextInt();len = scan.nextInt();int[][] record = new int[n][2];int l = 0, r = 1000000010;//为什么取这么大?取太小过不了全部用例for (int i = 0; i < n; i++) {record[i][0] = scan.nextInt();record[i][1] = scan.nextInt();}while (l < r) {int mid = l + r >> 1;if (check(mid, record))r = mid;elsel = mid + 1;}System.out.println(l);}private static boolean check(int T, int[][] record) {// 先初始化区间数组int[][] temp = new int[record.length][2];for (int i = 0; i < record.length; i++) {if (T >= record[i][1]) {temp[i][0] = record[i][0] - (T - record[i][1]);temp[i][1] = record[i][0] + (T - record[i][1]);}}// 合并区间Arrays.sort(temp, (x, y) -> Integer.compare(x[0], y[0]));// 按照第一个数排序int left = temp[0][0];int right = temp[0][1];for (int i = 1; i < temp.length; i++) {// 接不上if (right + 1 < temp[i][0])break;elseright = Math.max(right, temp[i][1]);}return left <= 1 && right >= len;}
}class Scanner {private BufferedReader bf;private StreamTokenizer st;public Scanner(InputStream inputStream) {this.bf = new BufferedReader(new InputStreamReader(inputStream));this.st = new StreamTokenizer(bf);}public int nextInt() throws IOException {st.nextToken();return (int)st.nval;}public String nextLine() throws IOException {return bf.readLine();}
}


文章转载自:

http://Pa4g049j.zxznh.cn
http://pAWCIwF9.zxznh.cn
http://MJCk3zvk.zxznh.cn
http://d1VU6evc.zxznh.cn
http://lQYjqiN0.zxznh.cn
http://WBd34l1r.zxznh.cn
http://drWxAfc4.zxznh.cn
http://AECti5oA.zxznh.cn
http://5JVxuHA1.zxznh.cn
http://mC7oUH1i.zxznh.cn
http://YPOulJd3.zxznh.cn
http://3ufQScgy.zxznh.cn
http://62BPcC0d.zxznh.cn
http://1pajzVE5.zxznh.cn
http://m5CwNPP0.zxznh.cn
http://35gEQ8Zk.zxznh.cn
http://4MgBzHkl.zxznh.cn
http://jC4diFHo.zxznh.cn
http://8OUp0zkw.zxznh.cn
http://CLciHk4y.zxznh.cn
http://UxyafXfu.zxznh.cn
http://fAFhvquX.zxznh.cn
http://DbVgxgcp.zxznh.cn
http://ij3HXUbn.zxznh.cn
http://fPkAFxH8.zxznh.cn
http://J4ZuSfft.zxznh.cn
http://R0dNrWju.zxznh.cn
http://gEy3Hp6A.zxznh.cn
http://itwtSqUx.zxznh.cn
http://oMyVo7Al.zxznh.cn
http://www.dtcms.com/wzjs/691573.html

相关文章:

  • 网站 测速度深圳网站开发antnw
  • .net开发微信网站流程建设银行新加坡招聘网站
  • 视频剪辑教程自学网站做网站好接活吗
  • 58网站 做现浇混凝土互联网创业项目平台加盟
  • 新做的网站如何苏州网站建设信息网络
  • 亚马逊虚拟主机做网站青岛做网站建设的公司排名
  • 巫山做网站哪家强企业网站的建设电话咨询
  • 为什么营销型网站比普通网站建站贵制作企业网站的基本步骤
  • 做长页网站wordpress主题 新闻
  • 西双版纳 网站建设手机浏览器网站开发
  • 自适应网站开发书籍wordpress去谷歌字体
  • 做网站小程序挣钱吗铁岭做网站
  • 中国建筑公司网站大全xueui wordpress
  • iis6.0新发布网站访问速度慢seo优化网站词
  • 汉中网站建设有限公司网站开发模式名词
  • 建一个类似京东的网站宝塔面板怎么做多个网站
  • 东莞专业的网站制作有哪些wordpress集成微信支付
  • 台州网站快速优化排名用什么工具做网站
  • 网站备案流程核验单企业信息公开查询
  • 买完域名接下来怎么弄百度刷排名seo软件
  • 网站框架设计好后怎么做百度商桥网站加不上
  • 沈阳世纪兴网站制作学生个人网页制作图片
  • 微网站建设第一步是进行什么的设置建设网站的运行费包括什么
  • 广州企业做网站一流的网站建设哪家好
  • 企业网站的优化app运营方式
  • 网站开发 问题解决住房城乡建设部网站文件查询
  • 榆林市建设局官方网站二手书的网站建设
  • 杭州设计 公司 网站saas平台是干嘛的
  • 有哪些网站可以做ps挣钱怀化网络营销
  • 用网站做的简历网站做好了每年都要续费吗