[题目链接]

https://codeforces.com/contest/957/problem/C

[算法]

二分

注意精度问题

时间复杂度 :O(NlogN)

[代码]

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const double eps = 1e-;
  4. const int MAXN = 1e5 + ;
  5.  
  6. int n,m;
  7. int a[MAXN];
  8. double ans;
  9. bool ok;
  10.  
  11. template <typename T> inline void read(T &x)
  12. {
  13. int f = ; x = ;
  14. char c = getchar();
  15. for (; !isdigit(c); c = getchar()) { if (c == '-') f = -f; }
  16. for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
  17. x *= f;
  18. }
  19. template <typename T> inline void write(T x)
  20. {
  21. if (x < )
  22. {
  23. putchar('-');
  24. x = -x;
  25. }
  26. if (x > ) write(x/);
  27. putchar(x%+'');
  28. }
  29. template <typename T> inline void writeln(T x)
  30. {
  31. write(x);
  32. puts("");
  33. }
  34.  
  35. int main()
  36. {
  37.  
  38. read(n); read(m);
  39. for (int i = ; i <= n; i++) read(a[i]);
  40. ans = 0.0; ok = false;
  41. for (int i = ; i <= n; i++)
  42. {
  43. int l = i + , r = n , pos = -;
  44. while (l <= r)
  45. {
  46. int mid = (l + r) >> ;
  47. if (a[mid] - a[i] <= m)
  48. {
  49. pos = mid;
  50. l = mid + ;
  51. } else r = mid - ;
  52. }
  53. if (pos == - || pos == i + ) continue;
  54. if ((1.0 * (a[pos] - a[i + ]) / (a[pos] - a[i]) - ans) > eps)
  55. ans = 1.0 * (a[pos] - a[i + ]) / (a[pos] - a[i]);
  56. ok = true;
  57. }
  58. if (!ok) printf("-1\n");
  59. else printf("%.10lf\n",ans);
  60.  
  61. return ;
  62.  
  63. }

[Codeforces Round472C] Three-level Laser的更多相关文章

  1. Codeforces 847I - Noise Level

    847I - Noise Level 思路:bfs. 代码: #include<bits/stdc++.h> using namespace std; #define ll long lo ...

  2. codeforces 957 C Three-level Laser

    题意: 说的是一个电子云的三种状态,但是这不重要. 简单来说,就是在一个升序的序列中找三个数x,y,z,x和z的值之差不超过u,然后使得(z – y) / (z – x)最大. 思路: 使得(z – ...

  3. CodeForces 731D 80-th Level Archeology

    区间并. 对于上下两个数字,如果不一样,那么可以计算出哪一段范围内可以保证字典序,并且后面所有位置都无需再考虑.对所有范围求交集就是答案了. 求交集写起来有点烦,直接对不可取的范围求并即可. #pra ...

  4. [Linux] pwm设备驱动调试

    转载请注明出处:https://www.cnblogs.com/lialong1st/p/11436190.html CPU:RK3288 系统:Linux 客户需求是通过 pwm 控制激光的强弱,写 ...

  5. Codeforces Round #376 (Div. 2) D. 80-th Level Archeology —— 差分法 + 线段扫描法

    题目链接:http://codeforces.com/contest/731/problem/D D. 80-th Level Archeology time limit per test 2 sec ...

  6. 【codeforces 731D】80-th Level Archeology

    [题目链接]:http://codeforces.com/contest/731/problem/D [题意] 给你n个象形文; 每个象形文由l[i]个数字组成; 你可以把所有的组成象形文的数字同时增 ...

  7. Codeforces 15B Laser

    题目链接:点击打开链接 #include<stdio.h> #include<iostream> #include<string.h> #include<se ...

  8. [Lyft Level 5 Challenge 2018 - Elimination Round][Codeforces 1033D. Divisors]

    题目链接:1033D - Divisors 题目大意:给定\(n\)个数\(a_i\),每个数的约数个数为3到5个,求\(\prod_{i=1}^{n}a_i\)的约数个数.其中\(1 \leq n ...

  9. Codeforces Round #689 (Div. 2, based on Zed Code Competition) E. Water Level (贪心好题)

    题意:你在一家公司工作\(t\)天,负责给饮水机灌水,饮水机最初有\(k\)升水,水的范围必须要在\([l,r]\)内,同事每天白天都会喝\(x\)升水,你在每天大清早可以给饮水机灌\(y\)升水,问 ...

随机推荐

  1. QuickClip—界面原型设计

    1.需不需要设置用户登录/注册页? QuickClip没有提供该项功能.因为本产品为单纯的移动端视频编辑软件,是一个工具类软件.而且移动端软件本就追求的是方便快捷.简单易用,本产品不需要标识使用者的身 ...

  2. java虚拟机(六)--垃圾收集器和内存分配策略

    目前没有完美的收集器,不同的厂商.版本的虚拟机提供的垃圾收集器会有很大的差别,用户根据自己应用特点和要求组合出各个年代所使用 的收集器.基于jdk1.7Update14之后的虚拟机. HotSpot的 ...

  3. python实现二叉树的遍历以及基本操作

    主要内容: 二叉树遍历(先序.中序.后序.宽度优先遍历)的迭代实现和递归实现: 二叉树的深度,二叉树到叶子节点的所有路径: 首先,先定义二叉树类(python3),代码如下: class TreeNo ...

  4. java_线程创建的两种方法

    线程创建的方法有两种: 一 继承Thread类: public class ThreadTest { public static void main(String[] args) { //4)在mai ...

  5. JS设计模式—节流模式的实际应用

    在实际工作中,我们会经常遇到这样的业务场景,比如点击按钮提交表单,点击一次发一次请求,如果快速点击多次会发送多次请求,这样发送了多次请求是我们不愿意看到的.又比如输入框我们输入内容会调搜索的接口,那么 ...

  6. Iframe用法精析

    String.prototype.match()中正则表达式的g标识存在的时候,函数不会捕获子表达式中的内容,不存在的时候可以. RegExp.prototype.exec()中g的存在只会影响,Re ...

  7. acm学习指引

    acm学习心得及书籍推荐   一般要做到50行以内的程序不用调试.100行以内的二分钟内调试成功.acm主要是考算法的,主要时间是花在思考算法上,不是花在写程序与debug上. 下面给个计划练练: 第 ...

  8. Linux---文件目录管理

    1. Linux文件目录架构 Linux的目录结构与win的目录有很大不同,首先,没有盘符的概念:然后Linux使用斜杠/标识目录,Linux首先建立一个根目录,然后将其他文件系统挂载到这个目录下. ...

  9. Python随笔day03

    温故知新: 注释: 单行注释   # 多行注释   ‘’’ ‘’’  或者  “””  “”” 注意:三个单引号或双引号可以用于表示多行字符串. 判断输入的字符串是否是数字 salary = inpu ...

  10. 洛谷 P1877 BZOJ 2748 cogs 791 [HAOI2012]音量调节

    题目描述 一个吉他手准备参加一场演出.他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都需要改变一次音量.在演出开始之前,他已经做好一个列表,里面写着每首歌开始之前他想要改变的音量是多少. ...