Aggressive cows POJ - 2456 题解
题目链接
点击这里
代码
#include <iostream>
#include <algorithm>using namespace std;int N, M;
const int MAX_N = 100000;
int X[MAX_N];bool try_place(int mid)
{int pre = 0;int cnt = 1;for (int i = 1; i < N; ++i){if (X[i] - X[pre] >= mid){pre = i;++cnt;}}return cnt >= M;
}void solve()
{sort(X, X + N);int min_length = 0;int max_length = 1000000000;while(max_length - min_length > 1){int mid = (min_length + max_length) / 2;// << mid << endl;if (try_place(mid)){min_length = mid;}else{max_length = mid;}}cout << min_length << endl;
}int main()
{cin.sync_with_stdio(false);cin.tie(0);cout.tie(0);cin >> N;cin >> M;for (int i = 0; i < N ; ++i){cin >> X[i];}solve();return 0;
}
总结
这是一个简单的算法题,主要是基于二分法的思想,对两牛之间的最小距离最大化,对这个值进行二分。
每次二分的结果,都需要遍历一次数组来判断是否能够满足条件。
这里简述一下思想,就是现将牛进行排序,利用sort进行排序,复杂度(nlog(n))
之后,利用排序后的结果进行简单的判断,在第一个位置放第一头牛,在至少间隔你每个二分结果的距离上放第二头牛,看看能否放大于你要放的牛的数量,如果能放大于你要放的牛的数量,就减小上界,如果不能,就增大下届,知道找到一个最优的确定整数值,作为问题的结果输出即可。
随便写写的番外
好久没写算法了,都显得生疏了,今天买了一个新的键盘,来试试手,竟然感觉这种简单的算法题都不是很流畅了,以后多练练,把状态找回来。
这里不得不推荐一下 ,两款必备的键盘,我都亲身体验过,一款是比较适合打游戏的,icbk的c87系列,青轴,真的好用。
另一款,就是我现在手里的这款键盘了——宁芝的静电容键盘,适合办公使用,35g最新的T系列,打字是真的不累,甚至是一种享受了,跟网上传闻的高级薄膜键盘真的不一样,至少也得说是顶级薄膜了吧,因为其他薄膜根本没有可比性,静电容绝对比其他的薄膜键盘好得多了。
对于办公来说,绝对是退烧级键盘了,拿来办公一整天手指都不会很累,以后我这两款键盘就满足了,成功退烧。
祝大家认真工作与学习,一起共同加油,共同进步。
Aggressive cows POJ - 2456 题解相关推荐
- Aggressive cows POJ - 2456
2456 -- Aggressive cows 题目大意:有c只牛,要把他们放在n个屋子里,每个屋子放一只牛,每个屋子都在一根数轴上,给出他们的坐标,要让每个屋子间的最小距离尽可能的大,问这个最大距离 ...
- 二分搜索 POJ 2456 Aggressive cows
题目传送门 1 /* 2 二分搜索:搜索安排最近牛的距离不小于d 3 */ 4 #include <cstdio> 5 #include <algorithm> 6 #incl ...
- POJ 2456 Aggressive cows(二分答案)
Aggressive cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22674 Accepted: 10636 Des ...
- 二分入门——poj 2456 aggressive cows
这是一道二分的神奇贪心题,先上题目 Aggressive cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11714 A ...
- 暑期集训3:几何基础 练习题H: POJ - 2456
2018学校暑期集训第三天--几何基础 练习题H -- POJ - 2456 Aggressive cows Farmer John has built a new long barn, wit ...
- POJ 2481 Cows POJ 2352 Stars(树状数组妙用)
题目链接:POJ 2481 Cows POJ 2352 Stars 发现这两个题目都跟求逆序数有着异曲同工之妙,通过向树状数组中插入点的位置,赋值为1,或者++,然后通过求和来判断比当前 点 &quo ...
- 动态规划训练20 [Treats for the Cows POJ - 3186 ]
Treats for the Cows POJ - 3186 简单的区间DP,就不解释了. #include<iostream> #include<cstdio> using ...
- BZOJ 1734: [Usaco2005 feb]Aggressive cows 愤怒的牛( 二分答案 )
最小最大...又是经典的二分答案做法.. -------------------------------------------------------------------------- #inc ...
- POJ - 2456 二分解决
使用二分和贪心方法解决 POJ -2456 #include <iostream> #include<algorithm> #include<cstdio> #in ...
最新文章
- 沃森世界研讨会前瞻:AI服务 了解客户情绪
- mysql填加序列号(仿照oracle row_number函数)
- 前端三十五:图片的基本概念
- ubuntu 16.04 安装PhpMyAdmin
- 用redis构建分布式锁
- mysql最高权限超级用户是_MySQL中,预设的、拥有最高权限超级用户的用户名为( )...
- 2018-2019-1 20165237 《信息安全系统设计基础》第四周学习总结
- 标准库rand()函数的缺陷以及Blitz++随机数生成的简介
- linux信号(二)--unix环境高级编程读书笔记
- 计算机管理固件在哪里,itunes固件位置在哪里
- 寻找黑匣子——程序行为记录与跟踪
- 宏基aspire拆机触摸_Acer宏基E1471G笔记本怎么拆机拆主板?
- 在Win10系统中用mimikatz抓取明文密码
- 基于yolov3 v4 v5的电梯轿厢下的电动车目标检测
- 无人机集群通信网络拓扑重构及关键技术研究∗
- iOS开发之—— XCODE真机调试设备连接一直忙碌如何处理!(真机调试各种错误提示解决)...
- swper实现分页器样式修改
- windows server 批量取消域用户属性“密码永不过期”
- 适用于高级别自动驾驶的驾驶员可预见误用仿真测试
- 如何从GitHub上下载一个项目中的单个文件或者子文件夹