poj3258 题目  (最大化最小值)(最小值最大化)

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

此题要求最短距离最大,对于最短距离我们知道其范围是1~L,那么可以在该单调区间内进行二分查找不断缩小范围。

那么还需要一个判断函数judge来判断当前距离作为最短距离是否是可行解。如果是可行解,但有可能它不是最优解,那么因为求最大值我们还需要继续向其右部区间查找是否有更优解;如果不是可行解,那么可行解只可能在其左部区间,二分向左部查找。

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <algorithm>
  5. using namespace std;
  6. const int Max = 5e4+5;
  7. int L,N,M;
  8. int dis[Max];
  9. /*
  10. 要求去掉M块石头后,剩下的石头之
  11. 间以及石头与河岸的最小距离的最大值。
  12. */
  13. int cmp(int a,int b)
  14. {
  15. return a<b;
  16. }
  17. int Bsearch(int l,int r,int k)
  18. {
  19. int mid,last,cnt;
  20. while(l<=r)
  21. {
  22. mid=(l+r)>>1;
  23. last = cnt = 0;
  24. for(int i=1;i<=N+1;i++)
  25. if(mid>=dis[i]-dis[last]) cnt++;
  26. else last = i;
  27. if(cnt>k) r = mid-1;
  28. else l = mid+1;
  29. }
  30. return l;
  31. }
  32. int main()
  33. {
  34. cin>>L>>N>>M;
  35. dis[0]=0;
  36. dis[N+1]=L;
  37. for(int i=1;i<=N;i++)
  38. cin>>dis[i];
  39. sort(dis+1,dis+N+1,cmp);
  40. int ans = Bsearch(0,L,M);
  41. cout<<ans<<endl;
  42. return 0;
  43. }

poj 3273 题目(最小化最大值)(最大值最小化)

  1. #include<stdio.h>
  2. #include<iostream>
  3. #include <algorithm>
  4. #include<math.h>
  5. using namespace std;
  6. const int Max_N=1e5+5;
  7. const int INF = 0x3f3f3f3f;
  8. int N,M;
  9. int day[Max_N];
  10. bool C(int mon)
  11. {
  12. int sum=0,cnt=0;
  13. for(int i=0;i<N;i++)
  14. {
  15. if(day[i]>mon) return false;
  16. if(sum+day[i]<=mon) sum+=day[i];
  17. else {
  18. sum=day[i];
  19. cnt++;
  20. }
  21. }
  22. cnt++;
  23. return cnt<=M;
  24. }
  25. void solve()
  26. {
  27. int l=0,r=INF;
  28. while(r-l>1)
  29. {
  30. int mid = (r+l) >> 1;
  31. if(C(mid)) r= mid;
  32. else l = mid;
  33. }
  34. printf("%d\n",r);
  35. }
  36. int main()
  37. {
  38. scanf("%d%d",&N,&M);
  39. for(int i=0;i<N;i++)
  40. scanf("%d",&day[i]);
  41. solve();
  42. return 0;
  43. }

poj 3258 3273的更多相关文章

  1. POJ 3122 & 3258 & 3273 #二分

    以下三道都是经典二分,道理都差不多,代码就贴在一起了. POJ 3122    POJ 3258    POJ 3273 POJ 3122: #include<iostream> #inc ...

  2. POJ 2456 3258 3273 3104 3045(二分搜索-最大化最小值)

    POJ 2456 题意 农夫约翰有N间牛舍排在一条直线上,第i号牛舍在xi的位置,其中有C头牛对牛舍不满意,因此经常相互攻击.需要将这C头牛放在离其他牛尽可能远的牛舍,也就是求最大化最近两头牛之间的距 ...

  3. poj 3258 River Hopscotch 题解

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

  4. 二分搜索 POJ 3258 River Hopscotch

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

  5. E - River Hopscotch POJ - 3258(二分)

    E - River Hopscotch POJ - 3258 Every year the cows hold an event featuring a peculiar version of hop ...

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

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

  7. POJ 3258 River Hopscotch 二分枚举

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

  8. poj 3258 River Hopscotch 【二分】

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

  9. POJ 3258(二分求最大化最小值)

    题目链接:http://poj.org/problem?id=3258 题目大意是求删除哪M块石头之后似的石头之间的最短距离最大. 这道题目感觉大致代码写起来不算困难,难点在于边界处理上.我思考边界思 ...

随机推荐

  1. javascript DOM基础操作

    DOM(Document Object Model)即文档对象模型,针对HTML和XML文档的API(应用程序接口).DOM描绘了一个层次化的节点树,运行开发人员添加.移除和修改页面的某一部分.DOM ...

  2. GET与POST传递数据的长度分析

    在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST.GET - 从指定的资源请求数据,POST - 向指定的资源提交要被处理的数据.本篇文章我们就来分析一下GET与PO ...

  3. Nginx 如何限定IP访问

    在nginx.conf中的server限制段中.deny IP.表示需要限制该IP不可访问.allow IP表示权该IP可以访问. 如上图.表示阻止192.168.1.122的IP的访问.那当然也可以 ...

  4. VS2010正则批量替换set_和get_

    批量替换set_: daohang.set_ChannelName(rowArray[0]["ChannelName"].ToString()); daohang.set_Chan ...

  5. c++文件中引用C代码

    下面提供一个比较完整的示例程序,一共有四个文件:main.cpp.test.c.test.h.test.hpp main.cpp #include "test.hpp" int m ...

  6. Spring 系列教程之自定义标签的解析

    Spring 系列教程之自定义标签的解析 在之前的章节中,我们提到了在 Spring 中存在默认标签与自定义标签两种,而在上一章节中我们分析了 Spring 中对默认标签的解析过程,相信大家一定已经有 ...

  7. MVC 开发模式

    1.M:Model  模型:实体类和业务和dao 2.V:view  视图:JSP 3.C:Controller  控制器:servlet 3.1 作用:视图和逻辑分离 4.MVC适用场景:大型项目开 ...

  8. php中 isset函数有什么功能

    isset是判断一个变量是否定义过即使它没有值,返回值也是true比如$name="";或var $name;那么if(isset($name))echo 1;它也会输出1,因为$ ...

  9. Conda下安装libsvm

    如何在canda下安装libsvm? 版本:Python是2.7 canda2 首先想到的是去Python官网上找libsvm的包,结果并没有. 这是因为libsvm是c语言编写的并不是一个Pytho ...

  10. apache ab工具

    Apache ab并发负载压力测试   ab命令原理 Apache的ab命令模拟多线程并发请求,测试服务器负载压力,也可以测试nginx.lighthttp.IIS等其它Web服务器的压力. ab命令 ...