《计算机算法设计与分析》啃书中。。。

   有点看不进书,就来刷个水题吧,刚开始看错题了还。

   注意:是所有测量点相差均不大于di而不是相邻两点。。。

 1 //1137.河床
 2 #include <iostream>
 3 using namespace std;
 4
 5 int max_length(int d[], int l, int r, int m) {
 6     //计算最大长度并返回
 7     //d为保存高度的数组
 8     //l为下标左界
 9     //r为下标右界
10     //m为最大高度差
11     if (l==r) return 1;
12     if (l==r-1) {
13         if ((d[l]-d[r]<=m)&&(d[l]-d[r]>=-m)) return 2;
14         else return 1;
15     }
16     //二分
17     int mid = (l+r)/2;
18     int lm = max_length(d,l,mid,m);
19     int rm = max_length(d,mid+1,r,m);
20     int mm = 1;
21     int min , max;
22     min = max = d[mid];
23     for (int i = mid-1; i >= l; i--) {
24         if ((d[i]>=max-m)&&(d[i]<=min+m)) {
25             ++mm;
26             if (d[i]<min) min = d[i];
27             else if (d[i]>max) max = d[i];
28         }
29         else break;
30     }
31     for (int i = mid+1; i <= r; i++) {
32         if ((d[i]>=max-m)&&(d[i]<=min+m)) {
33             ++mm;
34             if (d[i]<min) min = d[i];
35             else if (d[i]>max) max = d[i];
36         }
37         else break;
38     }
39     //返回最大值
40     return (lm>rm?lm:rm)>mm?(lm>rm?lm:rm):mm;
41 }
42
43 int main() {
44     int n, m;
45     cin>>n>>m;
46     int d[n];
47     for (int i = 0; i < n; i++) cin>>d[i];
48     cout<<max_length(d,0,n-1,m)<<endl;
49     return 0;
50 }

  也不知道我是不是写的有点麻烦。。。

转载于:https://www.cnblogs.com/zmj97/p/5431888.html

sicily 1137 河床 (二分分治)相关推荐

  1. 2019牛客暑期多校训练营(第一场) A Equivalent Prefixes ( st 表 + 二分+分治)

    链接:https://ac.nowcoder.com/acm/contest/881/A 来源:牛客网 Equivalent Prefixes 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/ ...

  2. Looksery Cup 2015 F. Yura and Developers(单调栈+二分+分治)(难*)

    题目链接 题意:给定一个数组,问有多少区间满足:去掉最大值之后,和是k的倍数. 思路:日后补. #include<bits/stdc++.h> using namespace std; t ...

  3. sicily题目分类

    sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...

  4. [sicily]部分题目分类

    sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...

  5. Sicily 题目分类

    依照自己水平挑着做→ →~~ 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 ...

  6. 中大SICILY分类

    原文出处:http://linguifan2010.blog.163.com/blog/static/1315127442010102131322482/ ********************** ...

  7. Soj题目分类 python代码)

    正值期末复习,刷点soj放松下 但想看看能不能在找点关于数据结构的题目来做一下. 在网上看到有不少人上传过那些关于部分SOJ题目的描述,但是说实话有些乱 不过我看到有个网页中包含的一个类似文档的东西, ...

  8. 编程题目分类(剪辑)

    1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. 模拟 12. 算术与代 ...

  9. 初学者acm的练习题指南

    上机练习题参考题 忘了在哪找的啦~~希望对大家有帮助呦 <!--[if !supportLists]-->1.    <!--[endif]-->Programming Bas ...

最新文章

  1. 数据库初学者_面向初学者的免费6小时数据科学课程
  2. python模块datetime将字符串转换为日期
  3. docker中部署redis主从模式
  4. 平衡二叉树及其应用场景
  5. 缺陷分析与软件质量的关系
  6. 实战|渗透学校某内网服务器
  7. Restorator V2009 单文件版
  8. 每日一笑 | 程序员千万不能轻易去网吧!
  9. Delphi 7学习开发控件
  10. python测试驱动开发 中文版_GitHub - starryrbs/python_tdd: 使用Python测试驱动开发完成Django项目...
  11. 过程生产excel_生产型企业,自己开发管理系统,该如何选型?
  12. CI框架精简版教程 最快上手
  13. 计算机系固态硬盘机械硬盘,固态硬盘和机械硬盘可以在一起使用吗?
  14. python求梯形面积_python计算梯形面积
  15. oracle写一本日历
  16. Json:前台对象数组传到后台解析
  17. 多线程&高并发(全网最新:面试题 + 导图 + 核心学习笔记)面试手稳心不慌,轻松拿下 offer,秋招跳槽必不可少的底层能力
  18. 矩阵分解——QR分解
  19. EPSON RX8010SJ RTC 调试笔记之五, 时钟及日历解析
  20. 学生奖罚管理系统Java_学生管理系统

热门文章

  1. 我为什么不用do{}while()
  2. [翻译]在asp.net 2.0中使用WebParts
  3. HTML5 应用的现状与前景
  4. benet 3.0的构建企业网络视频第二章地址
  5. HTML 5 令人期待的 5 项功能
  6. 正方形分成16份,将1到16填入其中。让行和列都是从大到小。问一共有多少种方法?...
  7. Python中的高级变量类型
  8. 字节流的 创建 写入文字 复制文件
  9. 记录MNIST采用卷积方式实现与理解
  10. redux模块化demo