北大ACM2456——Aggressive cows~~二分搜索

这一题,也是简单的二分搜索,求解放置的牛之间的距离尽可能远,也就是最大化最小值。

主要的一步就是将第i头牛放在了x[j]的位置中,第i + 1
头牛就要放在满足x[j] + d < x [k]k的最小值

下面是AC的代码:

#include <iostream>
#include <algorithm>
using namespace std;

int N, M;
int X[100005];

bool C(int x)
{
	int last = 0;
	for(int i = 1; i < M; i++)
	{
		int cur = last + 1;
		while(cur < N && X[cur] - X[last] < x)         //满足X[last] + x > X[cur]的最小的cur。
		{
			cur++;
		}
		if(cur == N)
			return false;
		last = cur;
	}
	return true;
}

void solve()
{
	sort(X, X + N);
	int left = 0, right = 10000000;                   //距离在0到10000000之间搜索
	while(left  + 1 < right)                          //二分搜索
	{
		int mid = (left + right) / 2;
		if(C(mid))
			left = mid;
		else
			right = mid;
	}
	cout << left << endl;
}

int main()
{
	while(cin >> N >> M)
	{
		for(int i = 0; i < N; i++)
			cin >> X[i];
		solve();
	}
	return 0;
}
时间: 2024-10-25 03:26:16

北大ACM2456——Aggressive cows~~二分搜索的相关文章

poj 2456 Aggressive cows(二分搜索之最大化最小值)

Description Farmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. The stalls are located along a straight line at positions x1,...,xN (0 <= xi <= 1,000,000,000). His C (2 <= C <= N) cows don't like this barn layout an

二分搜索 POJ 2456 Aggressive cows

题目传送门 1 /* 2 二分搜索:搜索安排最近牛的距离不小于d 3 */ 4 #include <cstdio> 5 #include <algorithm> 6 #include <cmath> 7 using namespace std; 8 9 const int MAXN = 1e5 + 10; 10 const int INF = 0x3f3f3f3f; 11 int x[MAXN]; 12 int n, m; 13 14 bool check(int d)

POJ 2456 Aggressive cows(二分搜索最大化最小值)

Aggressive cows Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6372   Accepted: 3181 Description Farmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. The stalls are located along a straight line at positions x1,...

POJ 2456 Aggressive cows 【二分】

Aggressive cows 题目链接:http://poj.org/problem?id=2456 题意:有N个位置,(2 <= N <= 100,000),要在这N个位置放入C头牛(2 <= C <= N),要是牛与牛之间的最小距离最大,求这个最大可能的最小距离. 分析:显然又是一个求最大化最小值的问题,很容易找到这个题的单调性,设这个最大可能的最小距离为Ans,Ans∈(0,(Pos[N-1]-Pos[0])/(C-1) );首先对N个位置进行排序,然后在区间(0,(Pos

最大化最小值 Aggressive cows

Aggressive cows http://poj.org/problem?id=2456 N间小屋,M头牛,使得牛跟牛之间的距离最远,以防止牛打架. 2<=N<=100000 2<=M<=N 0 <=xi<=109 ////////////////////////////////////////////////////////////// C(d):=可以安排牛的位置使得任意两头牛的间距都不小于d 使用二分搜索法解决: //参考文献:挑战程序设计大赛(第二版)/**

BZOJ 1734: [Usaco2005 feb]Aggressive cows 愤怒的牛( 二分答案 )

最小最大...又是经典的二分答案做法.. -------------------------------------------------------------------------- #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #define rep( i , n ) for( int i = 0 ; i < n ; ++i ) #defin

Aggressive cows

Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Description Farmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. The stalls are located along a straight line at positions x1,...,xN

POJ 2456 Aggressive cows (二分 基础)

Aggressive cows Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7924   Accepted: 3959 Description Farmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. The stalls are located along a straight line at positions x1,...

bzoj 1734: [Usaco2005 feb]Aggressive cows 愤怒的牛

1734: [Usaco2005 feb]Aggressive cows 愤怒的牛 Description Farmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. The stalls are located along a straight line at positions x1,...,xN (0 <= xi <= 1,000,000,000). His C (2 <= C &l