zoukankan      html  css  js  c++  java
  • CF774L Bars

    题意:给你一个二进制表示是否可以吃巧克力。一共有k个巧克力,第一天和最后一天必须吃。最小化每两次吃巧克力的最大间隔?

    标程:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int read()
     4 {
     5    char ch=getchar();
     6    while (ch<'0'||ch>'9') ch=getchar();
     7    while ('0'<=ch&&ch<='9') return ch-'0';
     8 }
     9 const int N=200005;
    10 int n,k,a[N],head,pos,l,r,ans,num;
    11 bool check(int x)
    12 { 
    13    head=pos=1;num=0;
    14     for (int i=1;i<n;i++)
    15     {
    16         if (!a[i]) pos=i; 
    17         if (i==head+x+1) {
    18             if (pos==head) return 0;
    19             head=pos;num++;
    20         }
    21      }
    22      return num+2<=k;
    23 }
    24 int main()
    25 {
    26     scanf("%d%d",&n,&k);
    27     for (int i=1;i<=n;i++) a[i]=read();
    28     l=0;r=n;
    29     while (l<=r)
    30     {
    31         int mid=(l+r)>>1;
    32         if (check(mid)) ans=mid,r=mid-1;else l=mid+1; 
    33     }
    34     printf("%d
    ",ans);
    35    return 0;
    36 }

    题解:二分答案

    易错点:注意第一天和最后一天必须吃,特判一下。

  • 相关阅读:
    flask之Blueprint蓝图
    flask之Flask、config配置
    flask之路由route
    flask之request
    flask之response
    pyhton中的深浅copy
    jQuery选择器
    Html常用标签
    python中的字典dict
    python基础知识
  • 原文地址:https://www.cnblogs.com/Scx117/p/9067722.html
Copyright © 2011-2022 走看看