HDU 2899 Strange fuction(三分模版)
2017-08-27 12:29
429 查看
对于一个x变量满足,二分是满足单调性找到离其最近的值。
而三分就是一个凸函数,满足某个点离结果最近,其他两端结果都是递增
那么对于一个范围left1,right1,可以二分mid1=(left1+right1)/2,mid2=(mid1+right1)/2.
这样如果mid2>=mid1那么显然答案在区间left1,mid2之间(因为mid1的结果比较小)
然后反之一样,下面是模版
#include<cstdio>
#include<cmath>
#include<iostream>
#define eps 1e-6
using namespace std;
double a,b,c,x,y;
double left1,right1,p,mid1,mid2,k1,k2,ans1,ans2;
double X,Y;
double f(double x,double y){
return 6*pow(x,7)+8*pow(x,6)+7*pow(x,3)+5*pow(x,2)-y*x;
}
int main(){
//freopen("in.txt","r",stdin);
int T;
scanf("%d",&T);
while(T--){
//cin >> a >> b>>c>> X>>Y;
scanf("%lf",&Y);
left1=0;right1=100; //三分x,有x就有y,那么就有了距离的答案,这个答案满足三分的凸性
while(right1-left1>=eps){
// cout <<left1 <<" "<<right1<< endl;
mid1=(right1+left1)/2;
mid2=(mid1+right1)/2;
ans1=f(mid1,Y);ans2=f(mid2,Y); //
if(ans2>=ans1){//答案在left1与mid2之间
right1=mid2;
}else{
left1=mid1;
}
}
printf("%.4f\n",f(left1,Y));
}
return 0;
}
而三分就是一个凸函数,满足某个点离结果最近,其他两端结果都是递增
那么对于一个范围left1,right1,可以二分mid1=(left1+right1)/2,mid2=(mid1+right1)/2.
这样如果mid2>=mid1那么显然答案在区间left1,mid2之间(因为mid1的结果比较小)
然后反之一样,下面是模版
#include<cstdio>
#include<cmath>
#include<iostream>
#define eps 1e-6
using namespace std;
double a,b,c,x,y;
double left1,right1,p,mid1,mid2,k1,k2,ans1,ans2;
double X,Y;
double f(double x,double y){
return 6*pow(x,7)+8*pow(x,6)+7*pow(x,3)+5*pow(x,2)-y*x;
}
int main(){
//freopen("in.txt","r",stdin);
int T;
scanf("%d",&T);
while(T--){
//cin >> a >> b>>c>> X>>Y;
scanf("%lf",&Y);
left1=0;right1=100; //三分x,有x就有y,那么就有了距离的答案,这个答案满足三分的凸性
while(right1-left1>=eps){
// cout <<left1 <<" "<<right1<< endl;
mid1=(right1+left1)/2;
mid2=(mid1+right1)/2;
ans1=f(mid1,Y);ans2=f(mid2,Y); //
if(ans2>=ans1){//答案在left1与mid2之间
right1=mid2;
}else{
left1=mid1;
}
}
printf("%.4f\n",f(left1,Y));
}
return 0;
}
相关文章推荐
- HDU - 2899 Strange fuction 二分/三分
- hdu 2899 Strange fuction 三分
- hdu_2899_Strange fuction(三分查找)
- HDU 2899 Strange fuction(二分或三分)
- 【HDU 2899】Strange fuction(三分)
- HDU 2899 Strange fuction 水三分
- Hdu 2899 - Strange fuction 二分/三分求函数极值点
- hdu_2899_Strange fuction(三分查找)
- hdu 2899 Strange fuction(用三分即可 不用求导)
- HDU 2899 Strange fuction(三分)
- HDU 2899 Strange fuction(二分,三分)
- HDU 2899 Strange fuction(三分)
- HDU 2899 Strange fuction(二分||三分)
- hdu 2899 Strange fuction 【二分,三分】
- hdu 2899 Strange fuction (三分)
- hdu2899 Strange fuction 三分搜索
- Hdu 2899 Strange fuction(二分三分可做,模拟退火解法)
- 三分搜索算法&hdu 2899 Strange fuction
- HDU 2899 三分
- hdu 2899 Strange fuction