二分贪心 E 找距离最大的最小值
2017-04-24 09:36
176 查看
1、简单描述
有n个不连续的格子,每一个格子对应一个位置坐标,将c头牛分别放入不同的格子中,尽可能地使牛的距离相隔远,求在不同放法中最小距离的最大值。
2、思路
# include <iostream>
# include <algorithm>
using namespace std;
int N, C, node[100001];
bool Search(int x)
{
int last = node[1], m = 1;
for(int i = 2; i <= N; i++)
{
if(node[i] - last >= x)
{
last = node[i];
m++;
}
if(m >= C)
return true;
}
return false;
}
int main()
{
cin >> N >> C;
for(int i = 1; i <= N; i++)
{
cin >> node[i];
}
sort(node + 1, node + N + 1);
int l = node[1], r = node
;
while(l + 1 < r)
{
int mid = (l + r) / 2;
if(Search(mid))
l = mid;
else
r = mid;
}
cout << l << endl;
return 0;
}
二分查找
一开始的时候细节没注意到,如果为3和4,while(l<r)会进入死循环。
提交时显示超时,将cin改为scanf,提高速度。
有n个不连续的格子,每一个格子对应一个位置坐标,将c头牛分别放入不同的格子中,尽可能地使牛的距离相隔远,求在不同放法中最小距离的最大值。
2、思路
# include <iostream>
# include <algorithm>
using namespace std;
int N, C, node[100001];
bool Search(int x)
{
int last = node[1], m = 1;
for(int i = 2; i <= N; i++)
{
if(node[i] - last >= x)
{
last = node[i];
m++;
}
if(m >= C)
return true;
}
return false;
}
int main()
{
cin >> N >> C;
for(int i = 1; i <= N; i++)
{
cin >> node[i];
}
sort(node + 1, node + N + 1);
int l = node[1], r = node
;
while(l + 1 < r)
{
int mid = (l + r) / 2;
if(Search(mid))
l = mid;
else
r = mid;
}
cout << l << endl;
return 0;
}
二分查找
一开始的时候细节没注意到,如果为3和4,while(l<r)会进入死循环。
提交时显示超时,将cin改为scanf,提高速度。
相关文章推荐
- POJ 3258 River Hopscotch(二分·最小距离最大)
- POJ 3258 River Hopscotch(二分·最小距离最大)
- 【二分答案+贪心】解决“最小值最大”问题(UVa 12124 - Assemble)
- POJ 2112--Optimal Milking【二分找最大距离的最小值 && 最大流dinic】
- Tour HDU - 3488(带权二分匹配)(最小花费最大流)
- POJ 2253 Frogger(最小最大距离)
- HDU 1151Air Raid 最小路径覆盖=n-最大匹配量 (第二道二分匹配)
- POJ 3041 匈牙利算法 最小覆盖 最大二分匹配
- River Hopscotch poj3258 (二分+贪心思想+最小值最大化)
- 二分匹配总结(匈牙利算法+最大权+最小权)
- 【Codeforces Round 273 (Div 2)B】【贪心】 Random Teams n人分m组,可形成的最小朋友数和最大朋友数
- NWERC 2007 / UVa 12124 Assemble (二分搜索&最小值最大问题)
- 【Codeforces Round 328 (Div 2)D】【树的直径 树的重心 贪心 两次dfs都找最小编号最远点】Super M 经过树上所有重要点的最小距离
- 二分(最小值当中的最大值)_POJ 2456 Aggressive cows
- #1127 : 二分图三·二分图最小点覆盖和最大独立集
- POJ 3273 Monthly Expense(区间和最大值最小-二分)
- 最大密集子图(01分数规划+二分+最小割)POJ3155
- POJ 3273-Monthly Expense(二分求最小和中的最大)
- poj3258 River Hopscotch (二分搜索,考虑最大值最小问题)
- 贪心法求树的最小支配集,最小点覆盖,最大独立集