poj 3258 二分最小值最大

2021-07-04 05:34:33 字數 782 閱讀 5287

題意:

有一些石頭排成一條線,第乙個和最後乙個不能去掉。

其餘的共可以去掉m塊,要使去掉後石頭間距的最小值最大。

解析:二分石頭,最小值最大。

**:

#include #include #include #include #include #include #include #include #include #include #include #include #define ll long long

using namespace std;

const int inf = 0x3f3f3f3f;

const double eps = 1e-8;

const double pi = acos(-1.0);

const double ee = exp(1.0);

const int maxn = 50000 + 10;

ll dis[maxn];

ll l;

int n, m;

bool ok(ll k)

t = p;

}return cnt <= m;//<= 其他wa

}int main()

dis[++n] = l;

sort(dis, dis + n);

ll lo = 0, hi = 1000000000;

for (int i = 1; i <= 100; i++)

printf("%lld\n", lo);

}return 0;

}

poj 3258 二分法求最小值最大

這道題和poj3273 剛好是兩個相反的例子,乙個是求最大值最小,這個是求最小值最大。就是把一串數分成若干組,使得 組和 該組所有數的和 最大的哪一組的值最大或者最小。應用二分的思想,在距離最小值和總和之間二分查詢。如下 include include include include define ...

POJ 3258最小最大值

二分搜答案。這是乙個最大最小值問題,用二分找到乙個數字,表示最小距離,帶入到石頭裡面,看能否滿足至少有m n個石頭塊能夠滿足最小距離x。不斷二分去找到最大值。include include include include include include include include include...

POJ 3258 二分 貪心

poj 3258 二分 貪心 一條線段兩個端點之間的距離是l,兩端點之間分布著n個點,這n個點把線段分成了n 1份,現在讓你最多去掉 第一次讀錯題想了很久不知道怎麼做,remove是去掉不是移動,m個點,問n 1份線段最小值的最大值是多少 1 l 109,0 m n 50000 分析類似poj 32...