sicily 1137 河床 (二分分治)
《计算机算法设计与分析》啃书中。。。
有点看不进书,就来刷个水题吧,刚开始看错题了还。
注意:是所有测量点相差均不大于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 河床 (二分分治)相关推荐
- 2019牛客暑期多校训练营(第一场) A Equivalent Prefixes ( st 表 + 二分+分治)
链接:https://ac.nowcoder.com/acm/contest/881/A 来源:牛客网 Equivalent Prefixes 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/ ...
- Looksery Cup 2015 F. Yura and Developers(单调栈+二分+分治)(难*)
题目链接 题意:给定一个数组,问有多少区间满足:去掉最大值之后,和是k的倍数. 思路:日后补. #include<bits/stdc++.h> using namespace std; t ...
- sicily题目分类
sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...
- [sicily]部分题目分类
sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...
- Sicily 题目分类
依照自己水平挑着做→ →~~ 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 ...
- 中大SICILY分类
原文出处:http://linguifan2010.blog.163.com/blog/static/1315127442010102131322482/ ********************** ...
- Soj题目分类 python代码)
正值期末复习,刷点soj放松下 但想看看能不能在找点关于数据结构的题目来做一下. 在网上看到有不少人上传过那些关于部分SOJ题目的描述,但是说实话有些乱 不过我看到有个网页中包含的一个类似文档的东西, ...
- 编程题目分类(剪辑)
1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. 模拟 12. 算术与代 ...
- 初学者acm的练习题指南
上机练习题参考题 忘了在哪找的啦~~希望对大家有帮助呦 <!--[if !supportLists]-->1. <!--[endif]-->Programming Bas ...
最新文章
- 数据库初学者_面向初学者的免费6小时数据科学课程
- python模块datetime将字符串转换为日期
- docker中部署redis主从模式
- 平衡二叉树及其应用场景
- 缺陷分析与软件质量的关系
- 实战|渗透学校某内网服务器
- Restorator V2009 单文件版
- 每日一笑 | 程序员千万不能轻易去网吧!
- Delphi 7学习开发控件
- python测试驱动开发 中文版_GitHub - starryrbs/python_tdd: 使用Python测试驱动开发完成Django项目...
- 过程生产excel_生产型企业,自己开发管理系统,该如何选型?
- CI框架精简版教程 最快上手
- 计算机系固态硬盘机械硬盘,固态硬盘和机械硬盘可以在一起使用吗?
- python求梯形面积_python计算梯形面积
- oracle写一本日历
- Json:前台对象数组传到后台解析
- 多线程&高并发(全网最新:面试题 + 导图 + 核心学习笔记)面试手稳心不慌,轻松拿下 offer,秋招跳槽必不可少的底层能力
- 矩阵分解——QR分解
- EPSON RX8010SJ RTC 调试笔记之五, 时钟及日历解析
- 学生奖罚管理系统Java_学生管理系统