zoukankan      html  css  js  c++  java
  • codevs 4768 跳石头

    传送门

    表示去年不会,二分是啥都不知道,一脸懵逼。

    今年再做,虽然知道二分是啥了,但依旧不会,蒙蔽了好几天,最后还是看了题解。

    #include<cstdio>
    #define M 51000
    int n,m,ans=0,L;
    int a[M];
    void find(int l,int r)
    {
    if (l>r) return;//我做了无数遍,这句话毁了我一生。
    /*
    当l<=r时,可能查到的不是最小值中的最大值,继续向下查询。
    只有当l>r时,说明上一步查的是最大值。
    */
    int mid=(l+r+1)/2,k=0,sum=0;
    int bj[M];
    bj[++k]=0;
    for (int i=1;i<=n;i++)
    if (a[i]-a[bj[k]]>=mid) bj[++k]=i;
    else sum++;
    while (L-a[bj[k]]<mid) sum++,k--;
    if (sum>m) find(l,mid-1);
    else ans=mid,find(mid+1,r);
    }

    int main()
    {
    scanf("%d%d%d",&L,&n,&m);
    for (int i=1;i<=n;i++)
    scanf("%d",&a[i]);
    find(0,L);
    printf("%d",ans);
    return 0;
    }

    I'm so lost but not afraid ,I've been broken and raise again
  • 相关阅读:
    js38---门面模式
    js37---Function.prototype
    js36---函数嵌套
    js35
    js34
    js33--责任链模式
    js32---CommonUtil.js
    龙芯服务器参数
    SQLSERVER 秘钥整理
    IOMETER的简单使用
  • 原文地址:https://www.cnblogs.com/sjymj/p/5514057.html
Copyright © 2011-2022 走看看