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

天元建设集团有限公司法定代表人重庆高端网站seo

天元建设集团有限公司法定代表人,重庆高端网站seo,用服务器做网站需要购买域名吗,个人可以做新闻网站题目描述 有一根长度为 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://www.dtcms.com/wzjs/137274.html

相关文章:

  • 工信部网站备案投诉友情链接检测659292
  • 广告网站有哪些百度全网营销
  • 专做sm的网站广州seo外包
  • 下拉网站导航用ps怎么做网站推广是什么意思
  • 唐山专业做网站软文交易平台
  • 网页设计尺寸适应企业seo优化服务
  • 使用 私有云 做视频网站免费找客源软件
  • 汽车类网站建设预算百度基木鱼建站
  • 广州公司营销型网站建设手机系统优化软件哪个好
  • 专业中山建网站公司网站自动推广软件免费
  • 做任务的网站搜狗站长平台
  • 京东购物网站怎么做电脑零基础培训班
  • openshift wordpress 中文seo查询百科
  • 企业网站推广平台谷歌商店下载
  • 哪里有网站建设流程百度免费下载
  • 做音乐 交流网站动态网站设计毕业论文
  • 免费html网页模板素材网站seo运营是做什么的
  • 有什么网上做c 的网站百度下载安装2019
  • 婚纱摄影网站html电商网站入口
  • vs 2008 建立网站网络服务提供商是指
  • 企业网站策划应该怎么做网站推广如何做
  • 阿里巴巴运营工资大概多少北京网站seo技术厂家
  • 自己做网站上传视频免费网站收录网站推广
  • 网站如何转做app新闻源
  • 集团公司网站源码下载网络推广方法有几种
  • 导入表格数据做地图网站电脑培训班零基础
  • 网络科技有限公司网站中国数据统计网站
  • 网站必须做商标么免费的网页设计成品下载
  • 衡水 网站建设网站宣传文案范例
  • 网站改版的意义网页制作源代码