zoukankan      html  css  js  c++  java
  • LOJ P10011 愤怒的牛 题解

    每日一题 day36 打卡

    Analysis

    非常水的二分模板,就直接二分答案,用贪心策略check就好了

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #define int long long
     6 #define maxn 100000+10
     7 #define rep(i,s,e) for(register int i=s;i<=e;++i)
     8 using namespace std;
     9 inline int read()
    10 {
    11     int x=0;
    12     bool f=1;
    13     char c=getchar();
    14     for(; !isdigit(c); c=getchar()) if(c=='-') f=0;
    15     for(; isdigit(c); c=getchar()) x=(x<<3)+(x<<1)+c-'0';
    16     if(f) return x;
    17     return 0-x;
    18 }
    19 inline void write(int x)
    20 {
    21     if(x<0){putchar('-');x=-x;}
    22     if(x>9)write(x/10);
    23     putchar(x%10+'0');
    24 }
    25 int n,m;
    26 int x[maxn];
    27 bool check(int dis)
    28 {
    29     int before=x[1],num=1;
    30     for(int i=2;i<=n;i++)
    31     {
    32         if(x[i]-before<dis) continue;
    33         ++num;
    34         before=x[i];
    35     }
    36     if(num>=m) return true;
    37     return false;
    38 }
    39 signed main()
    40 {
    41     n=read();m=read();
    42     rep(i,1,n) 
    43     {
    44         x[i]=read();
    45     }
    46     sort(x+1,x+n+1);
    47     int l=1,r=x[n],ans=0;
    48     while(l<=r)
    49     {
    50         int mid=(l+r)>>1;
    51         if(check(mid)==true) 
    52             ans=mid,l=mid+1;
    53         else if(check(mid)==false)
    54             r=mid-1;
    55     }
    56     write(ans);
    57     return 0;
    58 }

    请各位大佬斧正(反正我不认识斧正是什么意思)

  • 相关阅读:
    NSURLConnection与NSURLSession的区别
    微信支付流程
    支付宝支付流程
    配置openfire问题(Oracle)
    id和instancetype
    数组和集合
    静态变量,静态常量以及全局变量
    内存的那些事
    Block循环引用解析
    线程的几个小问题
  • 原文地址:https://www.cnblogs.com/handsome-zyc/p/11842805.html
Copyright © 2011-2022 走看看