zoukankan      html  css  js  c++  java
  • poj 3258 River Hopscotch

    最小值最大化问题,刚开始没思路,还是经che兄提醒,用二分,然后百度之,抄了一份。不过我是个有原则的人,就算要抄,也是要先理解才行,然后手打一份。为了证明彻底理解,偶尔还会小改动一下,比如把数组从1开始改为从0开始,for循环的条件改一下等等。

     1 #include <iostream>
     2 #include <algorithm>
     3 using namespace std;
     4 int a[50005];
     5 int l,m,n;
     6 bool ok(int mid)
     7 {
     8     int cnt=0,start=0,i;
     9     for(i = 0; i <= n; i++)
    10     {
    11         if(a[i]-start < mid) cnt++;
    12         else start = a[i];
    13     }
    14     if(cnt > m) return 0;
    15     else return 1;
    16 }
    17 int main()
    18 {
    19     int left,right,mid,ans,i;
    20     while(~scanf("%d%d%d",&l,&n,&m))
    21     {
    22         for(i = 0; i < n; i++)
    23             scanf("%d",&a[i]);
    24         a[n] = l;
    25         sort(a,a+n+1);
    26         left = 0;
    27         right = l;
    28         while(left <= right)
    29         {
    30             mid = (left+right)>>1;
    31             if(ok(mid))
    32                 ans = mid,
    33                 left = mid+1;
    34             else right = mid-1;
    35         }
    36         printf("%d\n",ans);
    37     }
    38     return 0;
    39 }

    今天很不好意思,又玩了,不过幸而最后还是刷了一题。

  • 相关阅读:
    LeetCode刷题191120
    LeetCode刷题191119
    LeetCode刷题191118
    LeetCode刷题191117
    Http相关小知识点笔记咯~
    Java开发之JSP指令
    Java开发之Servlet之间的跳转
    Java开发之Servlet生命周期
    Java开发之文件上传
    微信公众号开发之数据库
  • 原文地址:https://www.cnblogs.com/lzxskjo/p/2590966.html
Copyright © 2011-2022 走看看