zoukankan      html  css  js  c++  java
  • 洛谷 1824 进击的奶牛

    【题解】

      二分答案。

      check的方法:把给出的坐标排序,从小到大扫一遍,如果当前坐标与上一个放牛的位置相差超过mid,就把cnt加一,最后判断cnt是否符合要求即可。

      

     1 #include<cstdio>
     2 #include<algorithm>
     3 #include<cstring>
     4 #define LL long long
     5 #define rg register
     6 #define N 200010
     7 using namespace std;
     8 LL n,m,l,r,mid,a[N];
     9 inline LL read(){
    10     int k=0,f=1; char c=getchar();
    11     while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar();
    12     while('0'<=c&&c<='9')k=k*10+c-'0',c=getchar();
    13     return k*f;
    14 } 
    15 inline bool check(){
    16     int sum=1,last=a[1];
    17     for(rg int i=2;i<=n;i++) if(a[i]-last>=mid){
    18         sum++; last=a[i];
    19     }
    20     return sum>=m;
    21 }
    22 int main(){
    23     n=read(); m=read();
    24     for(rg int i=1;i<=n;i++) a[i]=read();
    25     sort(a+1,a+1+n); r=a[n]+1;
    26     while(l+1<r){
    27         mid=(l+r)>>1;
    28         if(check()) l=mid;
    29         else r=mid;
    30     }
    31     printf("%lld",l);
    32     return 0;
    33 }
    View Code
  • 相关阅读:
    WPF复杂形状按钮
    (WPF)360安全卫士界面设计
    WPF图标拾取器
    WPF透明窗体制作
    空间分析开源库GEOS
    GIS开源程序收集
    flask 链接 url_for()
    自定制404错误页码
    Flask 模板语言
    flask路由和视图和cookie
  • 原文地址:https://www.cnblogs.com/DriverLao/p/9296186.html
Copyright © 2011-2022 走看看