二分例题小整理
来源:互联网 发布:创意个人域名 编辑:程序博客网 时间:2024/05/17 04:08
二分是个很好的思想,感觉其实像分治,线段树这种都是二分的一个应用,因为计算机最怕的就是数据太多,而二分一次就可以减少一半的数据量,可以节省很多时间!
下面我们来看两道差不多的二分题目!
http://poj.org/problem?id=2456
题目的大意:
(插一句:学长跟我们讲说一个ACM三人团队,配置基本是一个大佬,啥都会那种,一个翻译,兼敲代码手速快,还有一个端茶送水,想来我也就能在翻译和端茶送水之间选一个,努力成为翻译吧,hhhh,但是现在看英语题的速度还是有问题的,多做点cf吧!)
有一个长线,上面分布着N个牛棚,告诉你牛棚的坐标,有C头牛,然后每头牛进来之后会互相打架,所以要让每头牛尽量的远,问怎么安排能使牛之间的最小的距离最大,输出这个最大的最小距离。
AC代码
#include<iostream>using namespace std;#include<algorithm>int n, c;//n个牛棚,c头牛int pos[100005];int ans = 0;bool judge(int x)//判断可不可行{ int i,cow; int j=1; cow = 1; for (i = 2; i <= n; i++) { if (pos[i] - pos[j] >= x) { cow++; j = i; } } if (cow >= c) return true; return false;}int bsearch(int s,int e){ while (s <= e)//二分最关键的东西 { int mid = (s + e) / 2; if (judge(mid)) s = mid + 1; else e = mid - 1; } return s - 1;}int main(){ while (scanf("%d%d", &n, &c) != EOF) { int i; for (i = 1; i <= n; i++) scanf("%d", &pos[i]); sort(pos, pos + n); cout << bsearch(0, pos[n] - pos[1])<<endl; //确定上下界,一般来说是自己定的上下界,自己看着办吧 } return 0;}
二分解题的关键就是二分什么东西,实在不行就是问什么就分什么,再不行就是都分一遍试试!
http://poj.org/problem?id=3104
我就不贴图了,有点长。
题目大意:
三分传送带
http://www.lydsy.com/JudgeOnline/problem.php?id=1857
阅读全文
0 0
- 二分例题小整理
- 二分搜索 小讲 【 理解 + 例题 】 更新ing......
- 二分查找例题
- JAVA基础例题整理
- 树形DP例题整理
- la4329 例题 小问题
- 二分图最大匹配例题
- LZOI-二分图匹配例题
- LZOI-二分图判断例题
- java例题学习:接口小例题
- 【经典优先队列例题整理】
- RMQ小讲 【 理解 + 例题 】
- 搜索例题讲解--小木棍
- java_静态_小例题
- HTML+CSS+JavaScript小例题
- 经典例题——二分查找
- 小整理
- 小整理
- Android之Activity生命周期总结(一)
- FreeRTOS简介与源码下载
- css隐藏和显示
- webpack 构建Vue项目
- 华为机试-提取不重复的整数
- 二分例题小整理
- matlab基础编程笔记
- js插件解读
- struts2笔记总结
- ajax常用方法
- MIME一览
- TNS-12537: TNS:connection closed TNS-12560: TNS:protocol adapter error TNS-00507: Connection clos
- 变量和基本类型
- kafka集群部署