題意:
有一些石頭排成一條線,第乙個和最後乙個不能去掉。
其餘的共可以去掉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...