一个不错的二分,注释在代码里

  1. #include <stdio.h>
  2. #include <cstring>
  3. #include <algorithm>
  4. #include <cmath>
  5. #include <iostream>
  6. using namespace std;
  7. ///二分搜索答案,最大化最小值
  8. int main()
  9. {
  10. int L,n,m;
  11. int a[];
  12. while(~scanf("%d %d %d",&L,&n,&m))
  13. {
  14. for(int i = ; i <= n; i++)
  15. scanf("%d",&a[i]);
  16. a[] = ;
  17. a[n+] = L;
  18. sort(a,a+n+);
  19. /*for(int i = 0;i <= n+1;i++)
  20. cout<<a[i]<<" ";
  21. cout<<endl;*/
  22. int l = ,r = L,mid;
  23. ///先模拟一个最小值mid,假设它就是正确答案
  24. int num;
  25. while(l <= r)
  26. {
  27. int last = ;
  28. int sum = ;
  29. mid = (l + r) / ;
  30. for(int i = ; i <= n+; i++)
  31. {
  32. if(a[i] - a[last] < mid)///如果比mid小,就将该节点强制删除,并计数
  33. sum++;
  34. else last = i;///如果不是就更新,为啥要更新,如果不更新,那我们计算的
  35. ///就不是两点之间的距离了啊
  36. }
  37. if(sum > m)///删多了,说明mid值偏大
  38. r = mid - ;
  39. else
  40. {
  41. l = mid + ;
  42. num = mid;
  43. }
  44.  
  45. }
  46. ///最后经过二分循环,得到最大的mid;
  47. printf("%d\n",num);
  48. }
  49. return ;
  50. }

POJ 3258 River Hopscotch(二分查找答案)的更多相关文章

  1. POJ 3258 River Hopscotch(二分答案)

    River Hopscotch Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 21939 Accepted: 9081 Desc ...

  2. [ACM] POJ 3258 River Hopscotch (二分,最大化最小值)

    River Hopscotch Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6697   Accepted: 2893 D ...

  3. poj 3258 River Hopscotch(二分+贪心)

    题目:http://poj.org/problem?id=3258 题意: 一条河长度为 L,河的起点(Start)和终点(End)分别有2块石头,S到E的距离就是L. 河中有n块石头,每块石头到S都 ...

  4. POJ 3258 River Hopscotch 二分枚举

    题目:http://poj.org/problem?id=3258 又A一道,睡觉去了.. #include <stdio.h> #include <algorithm> ]; ...

  5. poj 3258 River Hopscotch 二分

    /** 大意:给定n个点,删除其中的m个点,其中两点之间距离最小的最大值 思路: 二分最小值的最大值---〉t,若有距离小于t,则可以将前面的节点删除:若节点大于t,则继续往下查看 若删除的节点大于m ...

  6. 二分搜索 POJ 3258 River Hopscotch

    题目传送门 /* 二分:搜索距离,判断时距离小于d的石头拿掉 */ #include <cstdio> #include <algorithm> #include <cs ...

  7. poj 3258 River Hopscotch 【二分】

    题目真是不好读,大意例如以下(知道题意就非常好解了) 大致题意: 一条河长度为 L,河的起点(Start)和终点(End)分别有2块石头,S到E的距离就是L. 河中有n块石头,每块石头到S都有唯一的距 ...

  8. POJ 3258 River Hopscotch

    River Hopscotch Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 11031   Accepted: 4737 ...

  9. poj 3258 River Hopscotch 题解

    [题意] 牛要到河对岸,在与河岸垂直的一条线上,河中有N块石头,给定河岸宽度L,以及每一块石头离牛所在河岸的距离, 现在去掉M块石头,要求去掉M块石头后,剩下的石头之间以及石头与河岸的最小距离的最大值 ...

  10. POJ 3258 River Hopscotch (binarysearch)

    River Hopscotch Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5193 Accepted: 2260 Descr ...

随机推荐

  1. VBS基础篇 - 循环语句(4) - For Each...Next

    VBS基础篇 - 循环语句(4) - For Each...Next   For Each...Next 循环与 For...Next 循环类似.For Each...Next 不是将语句运行指定的次 ...

  2. Balancing Symbols

    symbols匹配问题 #include<iostream> #include<string> using namespace std; struct Node { char ...

  3. ebtables

    ebtables是以太网桥防火墙,以太网工作在数据链路层,ebtables过滤数据链路层包.2.6内核内置了ebtables,要使用它必须先按装她的用户空间工具(ebtables-V2.0.6),安装 ...

  4. 两层嵌套的JSON包的解法

    由于后台的变态,有时候会出现两层甚至多层嵌套的JSON包. 一层的很好解,而且我看过一些比较大的网站新闻接口返回的JSON包也仅仅是一层的. 比如下图所示一层的包 代码也很简单直观 dict = [d ...

  5. ORACLE里锁有以下几种模式,v$locked_object,locked_mode【转】

    ORACLE里锁有以下几种模式:0:none1:null 空2:Row-S 行共享(RS):共享表锁,sub share 3:Row-X 行独占(RX):用于行的修改,sub exclusive 4: ...

  6. 二分 Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) D

    http://codeforces.com/contest/722/problem/D 题目大意:给你一个没有重复元素的Y集合,再给你一个没有重复元素X集合,X集合有如下操作 ①挑选某个元素*2 ②某 ...

  7. hostent h_addr_list

    struct hostent { char FAR * h_name; /* official name of host */ char FAR * FAR * h_aliases; /* alias ...

  8. OpenGL中shader读取实现

    1.需要shader在OpenGL中工作,必须经过如下过程 2.代码实现 /********** * loadshader.h **********/ #pragma once #define _CR ...

  9. CSS样式 初学

    CSS样式 参考网站: CSS用法:3种 一:直接样式表 如<p style="color:red;">这是一个段落</p> 二:内部样式表 如:<s ...

  10. 构建一个最简单的web应用并部署及启动

    第一种构建方式:不使用maven File-new-Dynamic Web Project,用这种方式构建的web项目是在web.xml文件中配置了welcome-file的,但是却没有对应的文件,所 ...