【二分笔记】[poj 2456]Aggressive cows
来源:互联网 发布:淘宝网店怎么激活 编辑:程序博客网 时间:2024/06/10 20:34
关于二分得到整数答案的使用。
首先要保证答案一定要在区间当中。
while ()中条件为right > left。因为区间长度为一时mid就是答案。
mid可以是(left + right)/ 2,这样right-left=1时mid=left。 也可以是(left + right + 1) / 2,这样right-left=1时mid=right。
如果一段连续区间都满足条件,可以通过mid控制取最左边的还是最右边的数。
例题代码:该题是取最右边的数。
#include <algorithm>#include <string>#include <queue>#include <map>#include <cstdio>#include <cmath>#include <algorithm>#include <iostream>using namespace std;int *s,n,a;int js(int x){int ans = 1;int lens = 0;for (int i = 1; i < n; i++){lens += s[i];lens -= s[i - 1];if (lens >= x){ans++;lens = 0;}}return ans;}int main(){cin >> n >> a;s = new int[n];for (int i = 0; i < n; i++){scanf_s("%d",&s[i]);}sort(s,s+n);int left = 0, right = s[n - 1], mid = (left + right + 1) / 2;while (right - left>0){int tmp = js(mid);if (tmp>= a){left = mid;}else{right = mid-1;}mid = (left + right + 1) / 2;}cout << mid << endl;//system("pause");return 0;}
阅读全文
0 0
- 【二分笔记】[poj 2456]Aggressive cows
- POJ 2456 Aggressive cows 二分
- POJ 2456 Aggressive cows 二分
- poj 2456 Aggressive cows (二分)
- poj 2456 Aggressive cows 二分
- POJ - 2456 Aggressive cows 二分
- POJ 2456 Aggressive cows 【二分】
- POJ 2456 Aggressive cows(二分)
- POJ 2456 Aggressive cows 二分
- poj 2456 二分 Aggressive cows
- [POJ 2456]Aggressive cows[二分]
- 【POJ 2456 Aggressive cows】+ 二分
- poj 2456 Aggressive cows (二分)
- POJ 2456 Aggressive cows 二分
- POJ 2456 Aggressive cows 笔记
- poj 2456 Aggressive cows poj 3258 (二分)
- POJ 2456 Aggressive cows(二分)
- POJ 2456 - Aggressive cows(二分)
- EM算法在高斯混合模型中的应用
- 独家 | 预防自杀,大数据也在致力于挽救生命
- Gartner数据库报告解读及数据库技术发展方向预测
- codeforces 158B Taxi
- [leetcode]第15周作业
- 【二分笔记】[poj 2456]Aggressive cows
- seo团队构建以及分工的相应说明
- Search a 2D Matrix II
- 布谷鸟搜索算法
- c++深拷贝问题
- Java TCP网络编程
- 数据结构-排序进阶代码
- Collections 工具类
- Eclipse 版本发布规律