POJ---1759(Garland,二分一个,求另一个的最优)
2018-02-05 00:08
302 查看
题意:
N个点,每个点离X轴的距离满足如下关系:
H1 = A
Hi = (Hi-1 + Hi+1)/2
- 1, for all 1 < i < N
HN = B
Hi >= 0, for all 1 <= i <= N
一直A,求B的最小值。
题解:
由递推关系式可以知道,确定H2,剩下的所有H都可以确定,二分求H2的最小,进而得出HN的最小即可。
N个点,每个点离X轴的距离满足如下关系:
H1 = A
Hi = (Hi-1 + Hi+1)/2
- 1, for all 1 < i < N
HN = B
Hi >= 0, for all 1 <= i <= N
一直A,求B的最小值。
题解:
由递推关系式可以知道,确定H2,剩下的所有H都可以确定,二分求H2的最小,进而得出HN的最小即可。
#include<iostream> #include<cstdio> #include<algorithm> #include<queue> #include<string> #include<cstring> #include<vector> #include<functional> using namespace std; int maxl=1000; int N; double A,B,h[1005]; bool C(double mid) { h[1]=mid; for(int i=2;i<N;i++) { h[i]=2*h[i-1]+2-h[i-2]; if(h[i]<0)return false; } B=h[N-1]; return true; } int main() { cin>>N>>A; h[0]=A; //对第二个点进行二分 double lb=-1,ub=maxl+2; for(int i=1;i<=100;i++) { double mid=(lb+ub)/2; if(C(mid))ub=mid;//最小化可行解 else lb=mid; } printf("%.2f",B);//poj g++不能lf,C++可以lf 玄学! }
相关文章推荐
- POJ - 1759 Garland(二分)
- poj 1759 Garland 二分搜索
- POJ 1759 - Garland(二分搜索)
- POJ 1759 Garland (二分搜索)
- [POJ 1759] Garland (二分)
- POJ 1759 Garland(二分答案)
- POJ 1759 Garland 二分答案
- poj 1759 Garland (二分搜索之其他)
- Uva 10859 - Placing Lampposts 树形DP+保持一个值最优的情况下维护另一个最优值
- POJ 1380 Equipment Box(判断一个长方形能不能包含另一个长方形)
- POJ 1064 1759 3484 3061 (二分搜索)
- POJ 1759 Garland
- poj 2948 比较好的dp,方向不是一个的最优方案dp,可以作为以后出题,如果改成4个方向的怎么解决?
- poj 2728(最优比率生成树 二分)
- Poj 1759 (二分)
- 最优比率生成树 POJ 2728 迭代或者二分
- POJ 3630-Phone List【比较许多字符中有没有一个是另一个的前缀,简单方法】
- POJ_1064_Cable_master_(二分,假定一个解并判断是否可行)
- POJ 3461 Oulipo(KMP 模板 一个串在另一个串出现的次数(可重叠|不可))
- POJ 1064 Cable master(二分,假定一个解判断是否可行)