题目链接:http://codeforces.com/problemset/problem/645/C

题意:给你n个房间, 0代表空房子, 1代表非空的房子, 一个农夫和他的k个牛要住进空房子里面,i房子和j房子的距离是|j-i| 问农夫约翰和他的最远的牛的最小值是多少?

思路:这一题是求最大值的最小值,是一道很明显的二分的题。所以,我们可以枚举每一个空的房间,二分找出农夫住这个房间时与他最远的奶牛的最小值,然后每次更新这个最小值便是答案。最关键的就是这个二分的过程怎么写。对于每一个点,我们可以二分距离,如果这个距离符合题意,我们就可以把这个距离记下来,并令r=mid-1,反之,我们就让l=mid+1。然后用得到的距离来更新答案即可。
具体操作请看代码。

#include<iostream>
#include<cstdio>using namespace std;const int maxn=1e5+7;int sum[maxn];
char a[maxn];
int n,k;bool check(int i,int dist)
{int l=max(1,i-dist);int r=min(n,i+dist);if(sum[r]-sum[l-1]>=k+1) return true;else return false;
}int Search(int i)
{int imin;int l=1,r=n;while(l<=r){int mid=(l+r)/2;if(check(i,mid)){imin=mid;r=mid-1;}else{l=mid+1;}}return imin;
}int main()
{while(~scanf("%d%d",&n,&k)){scanf("%s",a+1);sum[0]=0;for(int i=1; i<=n; i++){if(a[i]=='0') sum[i]=sum[i-1]+1;else sum[i]=sum[i-1];}int ans=n;for(int i=1; i<=n; i++){if(a[i]=='0'){ans=min(ans,Search(i));}}printf("%d\n",ans);}return 0;
}

CodeForces - 645C Enduring Exodus(二分)相关推荐

  1. CodeForces 645C Enduring Exodus

    枚举,三分. 首先,这$n+1$个人一定是连续的放在一起的.可以枚举每一个起点$L$,然后就是在$[L,R]$中找到一个位置$p$,使得$p4最优,因为越往两边靠,距离就越大,在中间某位置取到最优解, ...

  2. CodeForces 655C Enduring Exodus (三分)

    题意:n个房间,k头牛和1个人,有的房间已经被占了,要求选择k+1个房间,使得人住的房间离最远的牛距离最短. 题解:三分 题目给出01字符串,只考虑距离,先把0的编号提取到单独的数组中,由于人到牛的距 ...

  3. 二分 - Enduring Exodus - CodeForces - 655C

    二分 - Enduring Exodus - CodeForces - 655C 题意: 首 行 输 入 包 括 两 个 整 数 n 和 m , 分 别 为 房 间 的 数 量 和 牛 的 数 量 . ...

  4. CF645C Enduring Exodus 题解

    题目:CF645C Enduring Exodus 双指针 - 单调队列 - 二分 这题有很多做法,单调队列/双指针+二分 这里讲一个最简单的,既不用双指针也不用单调队列 首先,输入时我们把可以住的房 ...

  5. codeforce-Enduring Exodus(二分真好用)

    Enduring Exodus 戳一戳->原题链接 原题 B. Enduring Exodus time limit per test2 seconds memory limit per tes ...

  6. 【二分查找】codeforces:Enduring Exodus

    二分查找: (百度百科)--折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务.它的基本思想是:(这里假设数组元素呈升序排列)将n个 ...

  7. Codeforces 685C Optimal Point (二分、不同类型距离的相互转换)

    题目链接 https://codeforces.com/contest/685/problem/C 题解 我怎么又还差最后一步的时候放弃了然后往别的方向上想了一小时才发现这个思路能做-- 首先二分答案 ...

  8. CodeForces - 1538G Gift Set(二分)

    题目链接:点击查看 题目大意:给出 a,b,x,ya,b,x,ya,b,x,y,分别表示有 aaa 个蓝色糖果和 bbb 和红色糖果,现在有两种打包方式: xxx 个蓝色糖果和 yyy 个红色糖果 y ...

  9. Success Rate CodeForces - 807C (数学+二分)

    You are an experienced Codeforces user. Today you found out that during your activity on Codeforces ...

最新文章

  1. 陶大程院士:深度学习“泛化”理论的回顾与前沿
  2. linux redis 3.0.7,linux虚拟机上安装配置redis3.0.7
  3. [家里蹲大学数学杂志]第418期南开大学2013年实变函数期末考试试题参考解答
  4. 微擎任意消息该公众号提供的服务器,该公众号提供的服务出现故障,请稍后再试...
  5. google怎么做(2.相似网页算法)
  6. css居中无效的解决办法
  7. hadoop 传感器数据_读取模式错误,计算引擎操作复杂……面对Hadoop这些问题该如何应对?...
  8. leetcode力扣75. 颜色分类
  9. Unity 用mono打开脚本时修改其显示分格,可VS风格等显示
  10. matlab评价模型和预测模型
  11. jQuery 事件冒泡
  12. 03 在CentOS7中安装oracle11g
  13. 简单实现微信小程序音乐音频播放的功能
  14. 幼儿园语言活动包括哪几类_幼儿园语言活动形式有哪些
  15. 说说翻转的数据结构课
  16. 联邦学习安全防御之差分隐私
  17. 好消息:部分银行磁条卡更换芯片卡
  18. 洞察各站点热销产品靠什么?东南亚虾皮shopee数据分析
  19. 华为ap WA131SN-NZ设置胖ap开启wifi无线网络
  20. 最大公约数、最小公倍数

热门文章

  1. input标签是什么?input标签属性有哪些
  2. Unity - 设置场景的环境光 RenderSetting.ambientXXX
  3. 关于QQ一些功能的实现(一)
  4. IntelliJ IDEA 2018.3安装详解
  5. 【程序人生】有没有可以快速阅读二进制文本的超人?
  6. java 入门 博客园_java入门基础
  7. windows7系统补丁怎么安装? win7系统补丁如何安装
  8. 重温JavaScript(lesson4):作用域和闭包(2)
  9. 详细了解操作系统,进程调度策略,有哪几种?
  10. 山东大学软件学院2022-2023 NOSQL考试知识点整理